【发布时间】:2013-06-08 22:26:14
【问题描述】:
我有两个 Kendo 网格定义,在局部视图中,除了局部视图模型和网格项模型外,它们完全相同。只有其中一个在代码行上给了我 JavaScript 控制台错误“无法读取未定义的属性 'dataSource'”:
$("#index-grid").data("kendoGrid").dataSource.bind("change", function (e) {...})
而另一个则没有。未定义的不是dataSource,而是$("#index-grid").data("kendoGrid")。然而,在另一个相同的网格中,我没有收到这个错误。提供给数据源的数据可能会使网格本身无效吗?网格定义如下所示:
@model TerminalIndexModel
@using Kendo.Mvc.UI
@using ParkPay.Helm.ViewModels
@(Html.Kendo().Grid<TerminalIndexItem>()
.Name("index-grid")
.Columns(columns =>
{
columns.Bound(p => p.Name);
columns.Template(@<text></text>).ClientTemplate("<input type='checkbox' #= IsActive ? checked='checked':'' # class='chkbx' />").Title("Active").Width(70);
columns.Bound(p => p.Remarks);
columns.Command(cmd => cmd.Destroy()).Width(80);
})
.ToolBar(toolbar =>
{
toolbar.Create();
toolbar.Save();
})
.HtmlAttributes(new { style = "height: 480px;"})
.Editable(editable => editable.Mode(GridEditMode.InCell))
.Filterable()
.Pageable()
.Scrollable()
.Sortable()
.Resizable(resize => resize.Columns(true))
.Reorderable(reorder => reorder.Columns(true))
.DataSource(dataSource => dataSource
.Ajax()
.ServerOperation(false)
.Batch(true)
.PageSize(20)
.Events(events => events.Error("kendoGridErrorHandler"))
.Model(model => model.Id(p => p.Id))
.Read(read => read.Action("Read", "Terminal"))
.Update(update => update.Action("BatchUpdate", "Terminal"))
.Create(create => create.Action("BatchCreate", "Terminal"))
.Destroy(destroy => destroy.Action("BatchDelete", "Terminal"))
)
)
唯一的区别是 TerminalIndexItem 与 LocationIndexItem' and andTerminalIndexModelversusLocationIndexModel, and of course the controller names in the CRUD definitions,TerminalversusLocation`。我无法找到两个网格之间的差异。
【问题讨论】:
-
两个网格的名称不同吗?
-
不,它们在不同的文件夹中具有相同的名称。
-
两个网格的显示时间与问题行的执行时间有什么不同吗?意思是,对于有效的网格,是否有可能在行执行时已经初始化,而对于有问题的网格,它不是?另外,同名的网格不会同时在同一个页面上使用,对吗?
-
不,它们总是分开使用。不过,您对订单的看法是可能的。我会调查一下,谢谢。如果可行,您可以将其作为答案。
-
@G_P 您是正确的,并且可以将您的评论作为答案。尽管对
$("#index-grid").data("kendoGrid")的一些调用包含在jQuery$( document ).ready()函数中,但网格本身并没有准备好。我将它们移动到网格DataBound事件的处理程序中,一切都很好。
标签: telerik kendo-ui kendo-grid