2015-05-03 64 views
0

我有一個Kendo網格與Kendo ListView作爲客戶端的詳細模板。 這裏是電網:Kendo網格客戶端詳細模板本地數據綁定

@(Html.Kendo().Grid<ITS.BusinessModel.TaskManager.TaskItem>() 
     .Name("grdPackage" + Model + "sTasks") 
     .Columns(columns => 
     { 
      columns.Bound(taskModel => taskModel.WorkflowInstanceId); 
      columns.Bound(taskModel => taskModel.WorkflowInstanceName); 
      columns.Bound(taskModel => taskModel.Name).ClientTemplate("<a onclick='openTasksForm(#= ID#)' > #= Name # </a>"); 
     } 
     .ClientDetailTemplateId("TaskSumeriesListViewTemplate") 
     .AutoBind(false) 
     .DataSource(dataSource => dataSource 
      .Ajax() 
      .PageSize(20) 
      .ServerOperation(true) 
      .Model(model => model.Id(Task => Task.ID)) 
      .Read(read => read.Action("TaskItemsList_Read", "Task", new { packageGroupID = Model, packageType = (Model == -2) ? 0 : (Model == -1) ? 1 : 2 })) 
     ) 
) 

下面是客戶端模板:

<script type="text/x-kendo-tmpl" id="TaskSumeriesListViewTemplate"> 

    @(Html.Kendo().ListView<ITS.BusinessModel.TaskManager.WorkflowInstanceSummaryItem>("#=TaskSumaries#") 
     .Name("listViewPackage") 
     .TagName("div") 
     .ClientTemplateId("SummeriesTemplate") 
     .ToClientTemplate() 
     ) 
</script> 

這裏是ListView控件模板:

<script type="text/x-kendo-tmpl" id="SummeriesTemplate"> 
    <div> 
     #=ColumnName# : #=ColumnValue# 
    </div> 
</script> 

每個TaskItem該網格讀有TaskSumariesList其是一個列表。 我想在GridView的Grid Client Detail中使用這個列表。 我該怎麼做?

回答

1

在你的事件呼喚你的網格,使用這樣的:

.Events(e => e.DetailInit("detailInit") 

然後,你可以做這樣的事情:

function detailInit(e) { 
    var list= $("#listViewPackage").data("kendoGrid");  

    list.dataSource.data(e.data.TaskSumariesList) 
} 

會發生什麼事是,名單將獲得人口並在擴展時提供適當的數據。

您可能需要爲您的列表名稱做這樣的事情:

.Name("listViewPackage#=WorkflowInstanceId#") 

這樣一來,您就可以確保你有一個正確的列表中正確的數據:

function detailInit(e) { 
    var list= $("#listViewPackage" + e.data.WorkflowInstanceId).data("kendoGrid");  

    list.dataSource.data(e.data.TaskSumariesList) 
} 
+0

謝謝您的回答肖恩 我不明白你的方式。 我想爲GridView中的每個項目打開一個ListView。 在我的模特里,我擁有我想要的一切。 對於我在GridView中顯示的模型中的每個項目,我都有一個List for Details的細節。 對於解決方案,我不得不將每個GridView項的每個detailsItem發佈到服務器,並再次將其發佈到客戶端以在GridViewDetail中打開ListView。 但我想這樣做沒有發佈。 – alireza

0

其實肖恩是對的。欲瞭解更多信息,請參閱: Kendo UI Grid: Detail Template Binding

您還可以添加數據源(DS => ds.Ajax())您seccond電網。

@(Html.Kendo().ListView<ITS.BusinessModel.TaskManager.WorkflowInstanceSummaryItem>("#=TaskSumaries#") 
     .Name("listViewPackage") 
     .TagName("div") 
     .ClientTemplateId("SummeriesTemplate") 
     .DataSource(ds => ds.Ajax()) 
     .ToClientTemplate() 
     ) 

看起來客戶端模板不適用於本地綁定的網格。