我有一个使用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
会产生错误。
完整示例here
编辑: 解决here!感谢@ 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"));
}
}
答案 0 :(得分:1)
不确定,但您的网格实际上不是同一个网格,但旧的(在重新加载之前)创建了一个和第二个网格。
以下行更改:
var item = $('#grid').data().kendoGrid.dataItem($(this).closest("tr"));
我建议您只需通过dataSource.data()方法更改数据,而不是重新创建网格。或者更改您的逻辑,以便在重新创建窗口小部件之前实际 destroy 。