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

確かではありませんが、グリッドは実際には同じグリッドではなく、古い (リロード前の) 1 つ目と 2 つ目のグリッドが作成されます。

次の行が変更されました:

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

更新版

グリッドを再作成する代わりに、 dataSource.data()メソッドを使用してデータを変更することをお勧めします。または、ロジックを変更して、ウィジェットを再作成する前に実際に破棄します。

于 2013-02-15T19:30:59.450 に答える