В примере teleriks из: http://demos.telerik.com/aspnet-mvc/grid/hierarchyserverside основной (родительской) сеткой является Модель. Затем она представляется как e в detailsView.Template (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
. Убедитесь, что вы пытаетесь заставить работать полную демо, а не толькоpart - тогда вы можете заменить фрагмент кода на ваш.