Обновление магазина ExtJs Gridpanel - PullRequest
29 голосов
/ 28 апреля 2011

Я связываю ExtJs Gridpanel из базы данных и добавляю кнопку «Удалить» под моей сеточной панелью.Используя обработчик кнопки удаления, я удалил выбранную запись на сетке.Но после удаления сетка не обновляется (она удаляется из базы данных, но отображается в сетке из-за отсутствия обновления).

Как обновить сетку после обработчика удаления?

Ответы [ 10 ]

39 голосов
/ 28 апреля 2011

Попробуйте обновить вид:

Ext.getCmp('yourGridId').getView().refresh();
13 голосов
/ 28 апреля 2011

перезагрузите ds для обновления сетки.

ds.reload();
11 голосов
/ 23 февраля 2012
grid.store = store;
store.load({ params: { start: 0, limit: 20} });
grid.getView().refresh();
5 голосов
/ 12 июля 2012

У меня была похожая проблема. Все, что мне нужно было сделать, это набрать store.load(); в обработчике удаления. Не было необходимости впоследствии набирать grid.getView().refresh();.

Вместо всего этого вы также можете набрать store.remove(record) в обработчике удаления; - это гарантирует, что удаленная запись больше не отображается в сетке.

4 голосов
/ 06 ноября 2014

Сочетание решений Даши и ММТ:

  Ext.getCmp('yourGridId').getView().ds.reload();
4 голосов
/ 05 февраля 2012

Лучше использовать store.remove, чем model.destroy.Обработчик нажатия для этой кнопки может выглядеть так:

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);
    }
}
3 голосов
/ 31 декабря 2013
grid.getStore().reload({
  callback: function(){
    grid.getView().refresh();
  }
});
3 голосов
/ 28 апреля 2011

попробуйте grid.getView().refresh();

2 голосов
/ 05 августа 2013

Другой подход в 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);
}
1 голос
/ 05 января 2018

Обновить Grid Store

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

Это перезагрузит сеточное хранилище и получит новые данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...