グリッドリロード後に削除された行が再び表示されます

StackOverflow https://stackoverflow.com/questions/4298196

  •  29-09-2019
  •  | 
  •  

質問

グリッドの削除ボタンを押すと、グリッドから行が消えますが、グリッドがリロードされると、その行が再び現れます。私は結果のない多くのコマンドを試しました。助けてください!前もって感謝します。

これは、グリッドを作成する関数です。

// 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();
        },
    }]
役に立ちましたか?

解決

grid.store.reload()メソッドを使用してグリッドをリロードすると、ストアはソースからデータをリロードします。この場合、ローカルデータ(配列またはjson文字列?)を使用しているように見えます。したがって、はい、あなたは店からレコードを削除していますが、リロードを呼び出すことで、それらのレコードを再挿入します。あなたの最善の策は、オブジェクト「mydata」から値を削除してから、リロードを呼び出すことです。それはあなたのための記録を取り除くはずです。

他のヒント

ex:mydata.splice(1,1)のためにmydataから削除する方法を見つけました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top