【发布时间】:2017-05-12 09:07:47
【问题描述】:
我正在关注示例here,在我看来,我们用模型调用视图(填充的数据表)似乎效率低
public ActionResult Index()
{
DataTable products = Products();
return View(products);
}
但它仅用于获取列标题,我们必须在“读取”操作中再次调用它以实际填充网格 - 即使在创建网格时所有数据都已经可用。
@model System.Data.DataTable
@(
Html.Kendo().Grid<dynamic>()
.Name("Grid")
.Columns(columns =>
{
foreach (System.Data.DataColumn column in Model.Columns)
{
var c = columns.Bound(column.ColumnName);
}
columns.Command(cmd => cmd.Edit());
})
...
.Read(read => read.Action("Read", "Home"))
在 HomeController 中:
public ActionResult Read([DataSourceRequest] DataSourceRequest request)
{
DataTable products = Products();
if (request.Aggregates.Any())
{
request.Aggregates.Each(agg =>
{
agg.Aggregates.Each(a =>
{
a.MemberType = products.Columns[agg.Member].DataType;
});
});
}
return Json(products.ToDataSourceResult(request));
}
有没有更好、更有效的方法在创建时从 DataSet 分配网格数据?
【问题讨论】:
-
如果您指定读取命令,则不要获取视图的负载,或使用视图结果中的数据来绑定网格。
-
还有另一种方式绑定Kendo Grid through JQuery
-
Vinay - 我不太明白 - 你是说没有模型实例的所有视图吗?我试过了,但是模型当然是空的,所以我当然会得到一个 NullReferenceException (并且网格无法获取列名!)或者你的意思可能与 mmushtaq 相同并通过 JQuery 来完成?
-
mmushtaq - 我知道这一点,但我特别想避免必须专门设置特定列等 - 我想要一个动态的、通用的解决方案来在 Kendo Grid 中显示 DataTable。 Html 助手版本似乎提供了。
标签: c# asp.net-mvc kendo-ui kendo-grid