0

我有一个带有剑道 ui 网格的 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"));
        }
    } 
4

1 回答 1

1

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

以下行已更改:

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

更新版本

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

于 2013-02-15T19:30:59.450 回答