web-dev-qa-db-fra.com

ExtJs Gridpanel magasin actualiser

Je lie ExtJs Gridpanel de la base de données et ajoute le bouton "Supprimer" en dessous de mon gridpanel. En utilisant le gestionnaire de bouton Supprimer, j'ai supprimé l'enregistrement sélectionné sur gridpanel. Cependant, après la suppression, la grille ne s'actualise pas (elle est supprimée de la base de données mais s'affiche sur la grille car elle n'est pas actualisée).

Comment puis-je actualiser la grille après le gestionnaire de suppression?

28
MNR

Essayez de rafraîchir la vue:

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

recharger le ds pour actualiser la grille.

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

J'ai eu un problème similaire. Tout ce que j'avais à faire était de taper store.load(); dans le gestionnaire de suppression. Il n'était pas nécessaire de taper grid.getView().refresh(); par la suite.

Au lieu de tout cela, vous pouvez également taper store.remove(record) dans le gestionnaire de suppression; - Cela garantit que l'enregistrement supprimé n'apparaît plus sur la grille.

5
anitacynax

Combinaison de solutions Dasha et MMT:

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

Il vaut mieux utiliser store.remove que model.destroy . Le gestionnaire de clic sur ce bouton peut ressembler à ceci:

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

essayez ceci grid.getView().refresh();

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

Une autre approche en 3.4 (je ne sais pas si cela est approprié Ext): Vous pouvez avoir un gestionnaire de suppression comme celui-ci, en supposant que chaque ligne a un bouton 'supprimer'.

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