Javascript 在不触发事件的情况下替换剑道的内容

Javascript 在不触发事件的情况下替换剑道的内容,javascript,kendo-ui,kendo-grid,Javascript,Kendo Ui,Kendo Grid,我有一个KendoUI网格,数据在一个可观察的数组中 var aKendoObservableArray = new kendo.data.ObservableArray([ .....]); // defining the grid .... dataSource: { data: aKendoObservableArray, pageSize: 10, schema: {

我有一个KendoUI网格,数据在一个可观察的数组中

var aKendoObservableArray = new kendo.data.ObservableArray([ .....]);

// defining the grid ....
dataSource: {
                data: aKendoObservableArray,
                pageSize: 10,
                schema: {
                    model: {
                        id: "_jobInstanceId" // the identifier of the model
                    }
                }
            },

我想在从服务器获得新数据后替换此阵列的内容。我已经尝试过拼接阵列以清除它并逐个添加新内容。这会导致巨大的性能下降,因为剑道试图在每次添加时确定如何分页网格。有没有办法用只触发一次的更改事件来替换剑道UI ObservableArray的内容?

剑道论坛对这个问题有一个答案。我们需要清理数组(触发一个remove事件)并一次推送所有元素(触发一个add事件)

因此,我需要的是

// clean the array
aKendoObservableArray.splice(0, aKendoObservableArray.length);
aKendoObservableArray.push.apply(aKendoObservableArray, [{...},{...},{...},{...},{...}];

最终,我要做的就是删除一个项目:

var idToRemove = $(this).parent().attr('data-id');

// remove all items that do not share the ID the user is trying to delete
for (var i = 0; i < e.model.MyArrayOfItems.length; i++) {
    if (e.model.MyArrayOfItems[i].idToMatch == idToRemove)
        e.model.MyArrayOfItems.splice(i, 1);
}
var idToRemove=$(this.parent().attr('data-id');
//删除所有不共享用户试图删除的ID的项目
对于(var i=0;i