重新加载kendo ui网格行项目代码执行错误

我有一个使用kendo ui grid的web应用程序。 当我单击一个按钮时,网格加载了Bakbone.js,我可以使用下一个代码删除一行:

$(document).on("click", "#grid tbody tr .ob-delete", function (e) { var item = grid.dataItem($(this).closest("tr")); var check = confirm("Do I delete:" + item.City ); if (check) { grid.removeRow($(this).closest("tr")); } }); 

要删除的按钮的配置:

  command: [ "edit", { name: "destroy", text: "Remove", className: "ob-delete" }] 

当我重新加载内容(网格)按下按钮时,如果我想删除一行, item.City产生错误。

这里有完整的例子

编辑:解决了 ! 感谢@ Whizkid747!

添加

 command: [ "edit",{ //... click: deleteRow }] 

然后,当单击按钮时,将调用一个函数:

 function deleteRow(e){ var item = this.dataItem($(e.currentTarget).closest("tr")); var check = confirm("Do I delete:" + item.City ); if (check) { grid.removeRow($(e.currentTarget).closest("tr")); } } 

不确定,但你的网格实际上不是同一个网格,而是旧的(在重新加载之前)创建了一个和第二个网格。

以下行改变了:

 var item = $('#grid').data().kendoGrid.dataItem($(this).closest("tr")); 

更新版本 。

我建议你只需通过dataSource.data()方法更改数据,而不是重新创建Grid。 或者更改你的逻辑,以便在重新创建它之前实际销毁它。