web-dev-qa-db-ja.com

ExtJs Gridpanelストアの更新

データベースからExtJs Gridpanelをバインドし、gridpanelの下に「削除」ボタンを追加します。削除ボタンハンドラーを使用して、gridpanelで選択したレコードを削除しました。ただし、削除後、グリッドは更新されません(データベースから削除されますが、更新されないためグリッドに表示されます)。

ハンドラーを削除した後にグリッドを更新するにはどうすればよいですか?

29
MNR

ビューを更新してみてください。

Ext.getCmp('yourGridId').getView().refresh();
39
Dasha Salo

dsをリロードしてグリッドを更新します。

ds.reload();
13
MMT
grid.store = store;
store.load({ params: { start: 0, limit: 20} });
grid.getView().refresh();
11
Yuttapol

同様の問題がありました。削除ハンドラーでstore.load();と入力するだけでした。その後grid.getView().refresh();と入力する必要はありませんでした。

これらすべての代わりに、削除ハンドラーでstore.remove(record)と入力することもできます。 -これにより、削除されたレコードがグリッドに表示されなくなります。

5
anitacynax

DashaとMMTソリューションの組み合わせ:

  Ext.getCmp('yourGridId').getView().ds.reload();
4
Warager

Model.destroyよりもstore.removeを使用する方が適切です。そのボタンのクリックハンドラは次のようになります。

destroy: function(button) {
    var grid = button.up('grid');
    var store = grid.getStore();
    var selected = grid.getSelectionModel().getSelection();

    if (selected && selected.length==1) {
        store.remove(selected);
    }
}
4
andrew

これを試してくださいgrid.getView().refresh();

3
shane87
grid.getStore().reload({
  callback: function(){
    grid.getView().refresh();
  }
});
3
Gerd

3.4の別のアプローチ(これが適切なExtかどうかわからない):すべての行に「削除」ボタンがあると仮定すると、このような削除ハンドラーを持つことができます。

handler: function(grid, rowIndex, colIndex) {
    var rec = grid.getStore().getAt(rowIndex);
    var id = rec.get('id');
    // some DELETE/GET ajax callback here...
    // pass in 'id' var or some key
    // inside success
    grid.getStore().removeAt(rowIndex);
}
2
jslivka

グリッドストアの更新

Ext.getCmp('GridId').getStore().reload();

これにより、グリッドストアがリロードされ、新しいデータが取得されます。

1
Sachet Patil