代码之家  ›  专栏  ›  技术社区  ›  cosy

网格重新加载后,删除的行重新出现

  •  1
  • cosy  · 技术社区  · 14 年前

    当我按下网格的“删除”按钮时,该行将从网格中消失,但当重新加载网格时,该行将重新出现。我试了很多命令但没有结果。请帮助! 事先谢谢。

    这是创建网格的函数:

    // 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();
            },
        }]
    
    2 回复  |  直到 12 年前
        1
  •  4
  •   FallenRayne    14 年前

    当使用grid.store.reload()方法重新加载网格时,存储将从源重新加载数据,因此在这种情况下,看起来您使用的是本地数据(数组或json字符串?)。是的,您正在从存储中删除记录,但是通过调用Reload,您将重新插入这些记录。最好的办法是在对象“mydata”中删除值,然后调用reload。那应该可以帮你把那些记录处理掉。

        2
  •  0
  •   cosy    14 年前

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