Extjs:从商店中删除行 - > store.removeAt(rowIndex位置)

时间:2013-09-26 12:55:31

标签: extjs extjs4 store

我的GridPanel中有一堆商店的RowIndexes。我想从我的商店删除这些。 如果我只有一个,没问题,Grid的视图是refrsehd,唯一的条目就是。

但是当我有超过0时,例如10个RowIndexes,我就像这里一样循环...

for(rowIndex in indexes)
 {
    store.removeAt(indexes[rowIndex]);
 }

...只从网格中删除几个条目。我觉得循环太快了? 我已经暂停了它,但是也没有用。 有没有人有想法? 致谢!!!

3 个答案:

答案 0 :(得分:6)

我会尝试以相反的顺序删除行。你试过吗? 像

这样的东西
var i = indexes.length - 1;
for (; i >= 0; i--){
   store.removeAt(indexes[i]);
}

答案 1 :(得分:4)

我知道答案已被接受,但我想我会补充一点,每次调用Ext.data.Store#removeAt时,每次调用该方法时都会触发datachanged事件。如果您有datachanged侦听器,则可能会遇到性能问题或意外行为。由于removeAt(index)只是remove(getAt(index))的一个方便的别名,因此您可以这样做。

function batchRemoveAt(store, indexes) {
    var records = Ext.Array.map(indexes, function (index) {
        return store.getAt(index);
    });
    store.remove(records);
}

这将触发整个删除的单个datachanged事件,以及每个删除的记录的单个remove事件。

答案 2 :(得分:0)

尝试调用remove加入的store方法 要删除的模型实例或实例数组或从中删除记录的索引数组。

store.remove([1,2,3]);

检查docs