我有一个主细节网格。 我有一个ViewModel,通过简单地将模型绑定到网格来填充Telerik父网格。 这一步很简单,但我无法根据父网格行中的数据填充子网格。如何使用mvc模型完成?有人可以向我解释如何让子/子网格根据父网格中父行的键值来提取数据吗? 我不能跟随Telerik的例子。他们的解决方案不易理解。 我正在使用服务器绑定
由于
答案 0 :(得分:0)
在teleriks例子中: http://demos.telerik.com/aspnet-mvc/grid/hierarchyserverside 主(父)网格是模型 然后在detailView.Template中表示为e(e =>
Html.Telerik().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); }) .DetailView(detailView => detailView.Template(e => { %> <% Html.Telerik().Grid(e.Orders) .Name("Orders_" + e.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}"); })
“详细信息”视图知道绑定到特定行,因为对于这里的每个员工,我们将订单放入详细视图中,因此它实际上是在“foreach”中完成的,所以没有特定的绑定需要担心。此关系是已传递到视图中的模型的一部分。
rowaction用于确定要显示为展开的部分
.RowAction(row => { if (row.Index == 0) { row.DetailRow.Expanded = true; } else { var requestKeys = Request.QueryString.Keys.Cast(); var expanded = requestKeys.Any(key => key.StartsWith("OrderDetails_" + row.DataItem.EmployeeID + "_" + row.DataItem.OrderID)); row.DetailRow.Expanded = expanded; } })
我建议您查看我们的文档 - 确保您提供了正确的脚本,然后尝试让您的示例设置就像他们的一样。 网格的参考不是太糟糕 - 您可以在以下位置找到它: http://www.telerik.com/help/aspnet-mvc/properties_t_telerik_web_mvc_ui_grid_1.html
确保您尝试让完整的演示工作,而不仅仅是部分 - 然后您可以逐个替换代码。