我在MVC劍道格,這是聲明Html.Kendo()。網格(Model.Orders)劍道網格MVC層次數據源detailtemplate當本地數據
對象「訂單」爲「列表細節」。我想把這個列表放在第二個網格中,其屬性爲ClientDetailTemplateId。 demo
我的問題是,如何設置模板的數據源,因爲「模式」已經有數據,在層次結構的例子中,數據源的模板,而不需要編寫調用動作控制器
我在MVC劍道格,這是聲明Html.Kendo()。網格(Model.Orders)劍道網格MVC層次數據源detailtemplate當本地數據
對象「訂單」爲「列表細節」。我想把這個列表放在第二個網格中,其屬性爲ClientDetailTemplateId。 demo
我的問題是,如何設置模板的數據源,因爲「模式」已經有數據,在層次結構的例子中,數據源的模板,而不需要編寫調用動作控制器
我這一個掙扎了很長一段時間,最終了解到,這可以使用服務器的結合來完成。
關鍵似乎是(可以告訴,未記錄的)「item」變量,該變量在DetailTemplate中可用,它給出包含應該綁定的數據的「master」網格上的當前行在細節電網(「詳細信息」,在你的情況)
下面是劍道ServerHierarchy樣本:
@model IEnumerable<Kendo.Mvc.Examples.Models.Employee>
@{ Html.Kendo().Grid(Model)
.Name("Employees")
.Columns(columns =>
{
columns.Bound(e => e.FirstName).Width(140);
columns.Bound(e => e.LastName).Width(140);
columns.Bound(e => e.Title).Width(200);
columns.Bound(e => e.Country).Width(200);
columns.Bound(e => e.City);
})
.DetailTemplate(
@<text>
@(Html.Kendo().Grid(item.Orders)
.Name("Orders_" + item.EmployeeID)
.Columns(columns =>
{
columns.Bound(o => o.OrderID).Width(101);
columns.Bound(o => o.ShipCountry).Width(140);
columns.Bound(o => o.ShipAddress).Width(200);
columns.Bound(o => o.ShipName).Width(200);
columns.Bound(o => o.ShippedDate).Format("{0:d}");
})
.DataSource(dataSource => dataSource.Server())
.Pageable()
.Sortable()
.Filterable()
)
</text>
)
.RowAction(row =>
{
if (row.Index == 0)
{
row.DetailRow.Expanded = true;
}
else
{
var requestKeys = Request.QueryString.Keys.Cast<string>();
var expanded = requestKeys.Any(key => key.StartsWith("Orders_" + row.DataItem.EmployeeID) ||
key.StartsWith("OrderDetails_" + row.DataItem.EmployeeID));
row.DetailRow.Expanded = expanded;
}
})
.Pageable()
.DataSource(dataSource => dataSource.Server().PageSize(5))
.Sortable()
.Render();
}
格代碼,呼叫的局部視圖,並通過訂單模型給它
<script id="template" type="text/kendo-tmpl">
@Html.Partial("_Orders",Model.Order)
</script>
在該局部視圖寫與模型劍道網格代碼作爲訂單模型
局部視圖
@(Html.Kendo().Grid<Kendo.Mvc.Examples.Models.OrderViewModel>()
.Name("grid_#=EmployeeID#")
.Columns(columns =>
{
columns.Bound(o => o.OrderID).Width(70);
columns.Bound(o => o.ShipCountry).Width(110);
columns.Bound(o => o.ShipAddress);
columns.Bound(o => o.ShipName).Width(200);
})
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(5)
.Read(read => read.Action("HierarchyBinding_Orders", "Grid", new { employeeID = "#=EmployeeID#" }))
)
.Pageable()
.Sortable()
.ToClientTemplate()
)
你的代碼幫了我。那謝謝啦。但我在排序,過濾等時出錯。任何想法爲什麼? – ary 2016-01-25 15:15:47