我有一个网格,一个按钮将在 http://jsfiddle.net/9zB8R/ 中删除
我的字段如fields: ['id', 'name', 'type']
。如果type == delete
我将删除它。
我初始化数据如下:
var simpleData = [];
var store = new Ext.data.ArrayStore({
fields: ['id', 'name', 'type'],
data: simpleData
});
for (i = 0; i < 20; i++) {
simpleData.push({id:''+i+'', name: 'name'+i, type: 'delete'});
}
//this record will not delete
simpleData.push({id:'20', name: 'enable', type: 'enable'});
store.loadData(simpleData);
我有一个如下所示的tbar,但无法删除所有记录type == delete
。我该如何解决这个问题。感谢。
tbar:[
{
text:'Delete all type = delete',
handler:function(){
store.each(function(item, idx) {
if (item && item.get('type')=='delete') {
store.removeAt(idx);
}
});
}
}
]
答案 0 :(得分:2)
问题在于“每个”循环。删除循环中的项目正在改变商店大小,因此只有部分项目被删除。
要解决此问题,您可以按相反的顺序遍历商店,然后按以下方式删除:
var grid = new Ext.grid.GridPanel({
width: 400,
height: 600,
store: store,
loadMask: true,
renderTo: Ext.getBody(),
tbar:[
{
text:'Delete all type = delete',
handler:function(){
var i = store.getCount()-1;
for (i; i>=0; i--) {
if (store.getAt(i).get('type')=='delete') {
store.removeAt(i);
}
}
}
}
],