Kendo web grid mvc层次结构数据源详细信息模板当本地数据
我在MVC中有一个剑道网格这是声明Html.kendo().grid(Model.Orders) 对象“Orders”有一个“Details”列表。我想使用ClientDetailTemplateId属性将此列表放在第二个网格中Kendo web grid mvc层次结构数据源详细信息模板当本地数据,grid,hierarchy,kendo-asp.net-mvc,Grid,Hierarchy,Kendo Asp.net Mvc,我在MVC中有一个剑道网格这是声明Html.kendo().grid(Model.Orders) 对象“Orders”有一个“Details”列表。我想使用ClientDetailTemplateId属性将此列表放在第二个网格中 我的问题是,既然“模型”已经有了数据,我如何设置模板的数据源,在层次结构的示例中,数据源在模板中调用控制器中的操作,而不是编写网格代码,调用局部视图并向其传递订单模型 <script id="template" type="text/kendo-tmpl">
我的问题是,既然“模型”已经有了数据,我如何设置模板的数据源,在层次结构的示例中,数据源在模板中调用控制器中的操作,而不是编写网格代码,调用局部视图并向其传递订单模型
<script id="template" type="text/kendo-tmpl">
@Html.Partial("_Orders",Model.Order)
</script>
@Html.Partial(“_Orders”,Model.Order)
在这个局部视图中,编写剑道网格代码,模型为Orders model
局部视图
@(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()
)
@(Html.Kendo().Grid())
.Name(“grid##=EmployeeID#”)
.列(列=>
{
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()
.页面大小(5)
.Read(Read=>Read.Action(“HierarchyBinding_Orders”,“Grid”,new{employeeID=“#=employeeID#“}))
)
.Pageable()
.Sortable()
.ToClient模板()
)
我为此挣扎了很长一段时间,最终了解到这可以通过服务器绑定来完成
关键似乎是DetailTemplate中可用的(据我所知,未记录的)“item”变量,该变量提供“主”网格上的当前行,其中包含应绑定到详细网格的数据(“在您的情况下为Details”)
以下是来自Kendo的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();
}
@model IEnumerable
@{Html.Kendo().Grid(模型)
.姓名(“雇员”)
.列(列=>
{
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(
@
@(Html.Kendo().Grid(item.Orders)
.Name(“订单”+项目.EmployeeID)
.列(列=>
{
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()
.可过滤()
)
)
.RowAction(行=>
{
如果(row.Index==0)
{
row.DetailRow.Expanded=true;
}
其他的
{
var requestKeys=Request.QueryString.Keys.Cast();
var expanded=requestKeys.Any(key=>key.StartsWith(“订单”+行.数据项.雇员ID)||
key.StartsWith(“OrderDetails_”+row.DataItem.EmployeeID));
row.DetailRow.Expanded=已展开;
}
})
.Pageable()
.DataSource(DataSource=>DataSource.Server().PageSize(5))
.Sortable()
.Render();
}
Hi,为什么要发送Model.Order,然后创建另一个网格?我需要的是第二个网格上“Order”中的详细信息。如何将该详细信息列表发送到此视图?@maldoxd这仅用于详细信息。我给你举了嵌套网格的例子。当你点击“细节”时,我会在细节中显示另一个网格。如果你不想要一个详细的网格,那么设计你想要的细节部分视图。你的代码帮助了我。谢谢。但我在进行排序、筛选等操作时出错。你知道为什么吗?