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?
Essayez de rafraîchir la vue:
Ext.getCmp('yourGridId').getView().refresh();
recharger le ds pour actualiser la grille.
ds.reload();
grid.store = store;
store.load({ params: { start: 0, limit: 20} });
grid.getView().refresh();
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.
Combinaison de solutions Dasha et MMT:
Ext.getCmp('yourGridId').getView().ds.reload();
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);
}
}
essayez ceci grid.getView().refresh();
grid.getStore().reload({
callback: function(){
grid.getView().refresh();
}
});
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);
}