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

时间:2013-02-15 10:13:42

标签: javascript jquery backbone.js kendo-ui kendo-grid

我有一个使用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"));
        }
    } 

1 个答案:

答案 0 :(得分:1)

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

以下行更改:

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

updated version

我建议您只需通过dataSource.data()方法更改数据,而不是重新创建网格。或者更改您的逻辑,以便在重新创建窗口小部件之前实际 destroy