1

当我按下网格的删除按钮时,该行会从网格中消失,但是当重新加载网格时,该行会重新出现。我尝试了很多命令都没有结果。请帮忙!提前致谢。

这是创建网格的函数:

// create the data store
var store = new Ext.data.Store({
    proxy: new Ext.ux.data.PagingMemoryProxy(myData),
    remoteSort:true,
    sortInfo: {field:'del', direction:'DESC'},

    reader: new Ext.data.ArrayReader({
        fields: [
           {name: 'id'},
           {name: 'name'},
           {name: 'category'},
           {name: 'price', type: 'float'},
           {name: 'active', type: 'int'},
           {name: 'actions', type:'text'}
        ]
    })
});

这是删除功能:

        buttons: [{
        text: 'Add',
        iconCls: 'silk-add',
        handler: this.onAdd

    }, '-', {
        text: 'Delete',
        iconCls: 'silk-delete',
                   handler: function(sm, rowIdx,r){

            var s = grid.getSelectionModel().getSelections();
            for(var i = 0, r; r = s[i]; i++){

              // store.remove(r);
               var index = store.data.indexOf(r);
               if(index > -1){
                r.join(null);
                store.data.removeAt(index);

            }
                store.modified.remove(r);

            if(index > -1){
                store.fireEvent('remove', store, r, index);     
            } 
                store.destroyRecord(store, r, index);
            }

           store.reload();
        },
    }]
4

2 回答 2

4

当您使用 grid.store.reload() 方法重新加载网格时,商店将从源重新加载数据,因此在这种情况下,您看起来像是在使用本地数据(数组或 json 字符串?)。所以是的,您正在从商店中删除记录,但是通过调用 reload 您正在重新插入这些记录。最好的办法是做一些事情,从对象“mydata”中删除值,然后调用 reload。那应该为您摆脱记录。

于 2010-11-29T16:48:01.417 回答
0

我找到了解决方案,如何从 mydata 中删除例如:myData.splice (1,1);

于 2010-11-30T00:12:26.947 回答