2016-05-09 14 views
0

ストリームのリストを監視するためのテーブルを作成する必要があります。 テーブル、あなたは次のような特徴持っている必要があり、添付から見ることができるように:TelerikのRadGridに複雑なオブジェクトをバインドする方法

  • ストリーム記述(または名前)
  • タイプ(入力、出力、または両方)を監視すべきを
  • enter image description here

    0123:特定の日の結果

これはdesidered結果である(ここでとは、問題です)

データストリームは、JSONを介してWebサービスによって提供されます。

私はRadGridですべてをやる予定ですが、実装にはいくつかの困難があります。

これが通過するモデルです:

" DetailStream" は
[DataContractFormat] 
public class StreamOutputDto : BaseDto 
{ 
    public string Name { get; set; } 
    public string Type { get; set; } 
    public List<DetailStream> Details { get; set; } 
} 

public class DetailStream 
{ 
    public string Id { get; set; } 
    public DateTime Date { get; set; } 
    public int CountInfo { get; set; } 
    public StateStream StateInput { get; set; } 
    public StateStream StateOutput { get; set; } 
    //... 
} 

public enum StateStream 
{ 
    InProgress, 
    Received, 
    Declined, 
    Inexistent 
} 

のでDetailStreamは、特定の日に特定のストリームの結果であります。 詳細はDetailStreamのリスト、つまり特定の週の特定のストリームの結果です。

名前とタイプに問題はありませんが、DetailStreamのリストの管理方法はわかりません。誰かが私を助けることができますか?

これは私の現在の実装である:

マイWebサービス

[ServiceContract] 
public interface IMyService 
{ 
    [OperationContract] 
    [WebInvoke(
     Method = "POST", 
     ResponseFormat = WebMessageFormat.Json)] 
    StandardResponse<StreamOutputDto> GetStream(string request); 
} 


[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] 
[MessageLoggingBehavior] 
public class MyService : IMyService 
{ 

    public StandardResponse<StreamOutputDto> GetStream(string request) 
    { 
     // TEST CASE: 
     StandardResponse<StreamOutputDto> response = new StandardResponse<StreamOutputDto>(); 
     response.Output = new StreamOutputDto(); 
     response.Output.Name = "Hi!"; 
     response.Output.Type = "Input"; 
     response.Output.Details = new List<DetailStream>(); 

     response.Output.Details.Add(new DetailStream(){ 
       Id = "1", 
       CountInfo = 100, 
       Date = DateTime.Today }); 

      response.Output.Details.Add(new DetailStream(){ 
       Id = "2", 
       CountInfo = 200 }); 

     return response; 
    } 

} 

マイWebForm.aspx

<head> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script> 
    <script src="RadGridParser.js"></script> 
</head> 

<body> 

    <telerik:RadScriptManager runat="server" ID="RadScriptManager1" /> 
    <telerik:RadSkinManager ID="RadSkinManager1" runat="server" ShowChooser="true"/> 

    <telerik:RadGrid ID="RadGrid1" RenderMode="Lightweight" ClientDataSourceID="RadClientDataSource1" 
      AllowPaging="false" AllowSorting="false" AllowFilteringByColumn="false" PageSize="5" runat="server"> 

     <MasterTableView DataKeyNames="Name" ClientDataKeyNames="Name"> 
      <Columns> 
       <telerik:GridBoundColumn DataField="Name" HeaderText="" DataType="System.String" > 
       </telerik:GridBoundColumn> 
       <telerik:GridBoundColumn DataField="Type" HeaderText="Tipologia flusso" DataType="System.String"> 
       </telerik:GridBoundColumn> 
       <telerik:GridBoundColumn DataField="Day1" HeaderText="Lunedì"> 
       </telerik:GridBoundColumn> 
       <telerik:GridBoundColumn DataField="Day2" HeaderText="Martedì"> 
       </telerik:GridBoundColumn> 
       <telerik:GridBoundColumn DataField="Day3" HeaderText="Mercoledì"> 
       </telerik:GridBoundColumn> 
       <telerik:GridBoundColumn DataField="Day4" HeaderText="Giovedì"> 
       </telerik:GridBoundColumn> 
       <telerik:GridBoundColumn DataField="Day5" HeaderText="Venerdì"> 
       </telerik:GridBoundColumn> 
      </Columns> 
     </MasterTableView> 

    </telerik:RadGrid> 

    <telerik:RadClientDataSource ID="RadClientDataSource1" runat="server" AllowBatchOperations="true"> 
     <ClientEvents OnCustomParameter="ParameterMap" OnDataParse="Parse" /> 
     <DataSource> 
      <WebServiceDataSourceSettings> 
       <Select Url="http://soldev/Axa.Sol.Web/ws/Ivass/IvassService.svc/GetStream" DataType="JSON" RequestType="Post" /> 
      </WebServiceDataSourceSettings> 
     </DataSource> 
     <Schema ResponseType="JSON"> 
      <Model ID="StreamModel"> 
       <telerik:ClientDataSourceModelField FieldName="Name" DataType="String" /> 
       <telerik:ClientDataSourceModelField FieldName="Type" DataType="String" /> 
       <telerik:ClientDataSourceModelField FieldName="Day1" DataType="String" /> 
       <telerik:ClientDataSourceModelField FieldName="Day2" DataType="String" /> 
       <telerik:ClientDataSourceModelField FieldName="Day3" DataType="String" /> 
       <telerik:ClientDataSourceModelField FieldName="Day4" DataType="String" /> 
       <telerik:ClientDataSourceModelField FieldName="Day5" DataType="String" /> 
      </Model> 
     </Schema> 
    </telerik:RadClientDataSource> 

</body> 

マイRadGridParser.js

//<![CDATA[ 
function ParameterMap(sender, args) { 
    //If you want to send a parameter to the select call you can modify the if 
    //statement to check whether the request type is 'read': 
    //if (args.get_type() == "read" && args.get_data()) { 
    if (args.get_type() != "read" && args.get_data()) { 
     args.set_parameterFormat({ request: kendo.stringify(args.get_data().models) }); 
    } 
} 

function Parse(sender, args) { 
    var response = args.get_response(); 
    if (response) { 
     args.set_parsedData(response.Output); 
    } 
} 

function UserAction(sender, args) { 
    if (sender.get_batchEditingManager().hasChanges(sender.get_masterTableView()) && 
       !confirm("Any changes will be cleared. Are you sure you want to perform this action?")) { 
     args.set_cancel(true); 
    } 
} 

//]]> 

答えて

1

RadGridはこれをそのまま受け入れることはできません。私が考えることができる唯一のことは、TemplateColumnを使うことです。テンプレート列には、「ItemTemplate」、「InsertTemplate」、および「EditTemplate」があります。

このコンテナ内には、任意のコントロールとhtml要素を配置できます。また、グリッドの "ItemDataBound"イベント内のこのコントロール(およびデータ項目)にアクセスすることもできます。これはあなたのシナリオを達成するのに役立ちます。

参考文献: Template Columns

項目-データバインドイベント:

protected void RadGrid_ItemDataBound(object sender, GridItemEventArgs e) 
{ 
if (e.Item is GridDataItem) 
{ 
    GridDataItem gridItem = e.Item as GridDataItem; 
    dynamic dataItem = (YourType)(gridItem.DataItem); 
    gridItem.ToolTip = dataItem.ID + " - " + dataItem.UUID; 
} 
} 
関連する問題