Extjs:从存储中删除行->;store.removeAt(行索引)

Extjs:从存储中删除行->;store.removeAt(行索引),extjs,extjs4,store,Extjs,Extjs4,Store,我在GridPanel中的一个存储中有一堆行索引。我想从我的商店中删除这些。 如果我只有一个,它没有问题,从网格的观点是refreshD和唯一的入口是远离 但是当我有超过0个,例如10个行索引时,我在这里这样的循环中创建它 for(rowIndex in indexes) { store.removeAt(indexes[rowIndex]); } …只有少数条目从网格中删除。我觉得循环太快了? 我已经超时了,但也不起作用。 有人有主意吗? 谢谢 尝试调用remove方法store

我在GridPanel中的一个存储中有一堆行索引。我想从我的商店中删除这些。 如果我只有一个,它没有问题,从网格的观点是refreshD和唯一的入口是远离

但是当我有超过0个,例如10个行索引时,我在这里这样的循环中创建它

for(rowIndex in indexes)
 {
    store.removeAt(indexes[rowIndex]);
 }
…只有少数条目从网格中删除。我觉得循环太快了? 我已经超时了,但也不起作用。 有人有主意吗?
谢谢

尝试调用
remove
方法
store
哪个帐户 要删除的模型实例或实例数组,或要从中删除记录的索引数组

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


选中

我将尝试按相反顺序删除行。你试过了吗? 差不多

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

我知道答案已经被接受,但我想我应该补充一点,每次调用方法时,为每个索引调用
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
事件。

谢谢,但此操作后不会刷新网格视图。只有当我按下页面工具栏上的刷新按钮时,删除的条目才会消失。使用Ext.getCmp(“ProvGrid”).getView().refresh()尝试了它;但不起作用,商店是如何被引用的?通过变量或直接从绑定组件,存储在我的控制器的init函数中定义:var store=Ext.getCmp('ProvGrid').getStore()。。。引用适用于其他函数,所以我认为这不是问题?!真的很酷!这管用!非常感谢你!!!不知道为什么它是反向工作的,但它确实如此!这是因为在删除行时更改了以下行的行索引。例如,删除索引为5的行时,索引为6的行将移动到索引5。