Подтвердить что ты не робот

Обновления магазина Gridpanel ExtJs

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

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

4b9b3361

Ответ 1

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

Ext.getCmp('yourGridId').getView().refresh();

Ответ 2

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

ds.reload();

Ответ 3

grid.store = store;
store.load({ params: { start: 0, limit: 20} });
grid.getView().refresh();

Ответ 4

Лучше использовать 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);
    }
}

Ответ 5

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

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

Ответ 6

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

Ответ 7

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

Ответ 8

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

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

Ответ 9

Другой подход в 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);
}