我的GridPanel中有一堆商店的RowIndexes。我想从我的商店删除这些。 如果我只有一个,没问题,Grid的视图是refrsehd,唯一的条目就是。
但是当我有超过0时,例如10个RowIndexes,我就像这里一样循环...
for(rowIndex in indexes)
{
store.removeAt(indexes[rowIndex]);
}
...只从网格中删除几个条目。我觉得循环太快了? 我已经暂停了它,但是也没有用。 有没有人有想法? 致谢!!!
答案 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)