我的网格是这样构建的:
@(Html.Kendo().Grid<MyProject.Models.DataObjects.MyObject>()
.Name("my-object-grid")
.Columns(columns =>
{
columns.Bound(p => p.ID).Hidden();
columns.Bound(p => p.Name).Width(300);
columns.Command(command =>
{
command.Edit().Text("Modify")
.UpdateText("Save")
.CancelText("Cancel")
.HtmlAttributes(new { style = "width:90px;height:30px;font-size:12px;" });
command.Destroy().Text("Delete").HtmlAttributes(new { style = "width:90px;height:30px;font-size:12px;" });
}).Width(220);
})
.ToolBar(toolbar => toolbar.Create().Text("Add").HtmlAttributes(new { style = "width:120px;height:30px;float:left;" }))
.Editable(editable => editable.Mode(GridEditMode.PopUp)
.Window(win => win.Title("MyObject")).TemplateName("MyObject"))
.Pageable()
.Sortable()
.Scrollable()
.Filterable()
.HtmlAttributes(new { style = "height:430px;" })
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(10)
.Model(model =>
{
model.Id(p => p.ID);
})
.Create(update => update.Action("MyObject_Create", "MyObject"))
.Read(read => read.Action("MyObject_Read", "MyObject"))
.Update(update => update.Action("MyObject_Update", "MyObject"))
.Destroy(update => update.Action("MyObject_Delete", "MyObject"))
.Events(evt => evt.Push("myObjectGridDataSource_push").Error("myObjectGridDataSource_error"))
)
)
foolwingo javacript处理程序在以下定义:
<script type="text/javascript">
function myObjectGridDataSource_push(e) {
alert(e.type);
}
function myObjectGridDataSource_error(e) {
alert(e.status);
}
</script>
帮助程序生成的javascript似乎没问题,但是当我添加/编辑/删除某些网格项时,事件处理程序永远不会被触发。但是对控制器的请求工作正常。
这可能与网格的编辑模式有关(使用弹出窗口)吗? 我找不到我做错了什么......
答案 0 :(得分:2)
在dataSource传输初始化期间调用Push,以设置推送通知。数据源只会调用此函数一次并提供回调,这些回调将处理推送通知(从服务器推送的数据)。
Push event Detailed information
如果你能说出你想要达到的目标,那么我可以提供更多帮助。此外,如果您想在记录ID被删除或插入或删除之前捕获事件,那么push将不会这样做。您需要实现网格的 sync 事件。