1

チェックされている行を削除する次のコードがあります (各行にはチェックボックスがあり、ツールバーに [フィルター] ボタン (およびその他のボタン) があります)。

var grid = $("#resultsGrid").data("kendoGrid");
grid.tbody.find("input:checked").closest("tr").each( function(index) {
    grid.removeRow($(this));
});

ただし、削除される行が 20 行を超えると、パフォーマンスが問題になり始めます。ただし、剣道は 20 行以上をはるかに高速にフィルター処理 (削除) します。ビューから複数の行を削除する剣道フィルタリングはどのようになっていますか? または、グリッドから複数の行を削除する他のより良い方法はありますか? よろしくお願いします。

4

2 に答える 2

4

** Fiddle を新しい場所に更新 - 以前と同じコード **

データを直接処理してみてください。チェックボックスを行の Id にフックし、それをフィルタリングします。

配列要素を削除してからグリッドを再作成するフィドルをリンクしました。グリッドの上部にある 2 つのテキスト ボックスは、削除する ID の範囲をキャプチャします (これは、checkboxId の同じ配列になります)。次に、これらの「ID の削除」を繰り返し、データ配列からそれらを削除し、グリッドを作り直しました。

以前のフィドルを少し変更したため、DataSource オブジェクトを直接処理するのではなく、グリッドを再作成しています。しかし、私がやっていることの要点を理解していただければ幸いです。

この例には 1000 レコード (3 列のみ) がありますが、950 レコードがすぐに削除されます。

Fiddle-データ配列から削除

KendoUI DataSource オブジェクトを使用した例が必要な場合はお知らせください。

StackOverflow ではこのコードがないと投稿できないため、以下にこのコードを含めました。

function filterData() {

    var val1 = $("#val1").val();
    var val2 = $("#val2").val();

    var removeIndexes = new Array();

    for (var i = val1; i <= val2; i++) {
        removeIndexes.push(i);
    }    

    $(removeIndexes).each(function(removeIndex) {
        var removeItemId = this;
        $(randomData).each(function(dataIndex) {
            var continueLoop = true;
            if (this.Id == removeItemId) {
                randomData.splice(dataIndex, 1);
                continueLoop = false;
            }
            return continueLoop;
        });
    });

    createGrid();
}
于 2012-11-16T23:21:15.050 に答える