ExtJS 4: Как перезагрузить сетку с тем же параметром - PullRequest
4 голосов
/ 07 февраля 2012

Интересно, почему разработчики ExtJS решили удалить метод reload() в ExtJS 4 Store API.Я думаю, что это плохое решение.

Вот моя проблема.Я использую следующий код для инициализации хранилища сетки:

store.load({
   params: {
       paramName: dynamicParameter
   }
});

УВЕДОМЛЕНИЕ переменная dynamicParameter в коде выше.

Затем, если я удаляюнекоторые записи из сетки, мне нужно перезагрузить хранилище.

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

Код для удаления записейвыглядит так:

function deleteGridItems(grid, deleteUrl){
    // get selected rows
    var records = grid.getSelectionModel().getSelection();

    // ...... (codes to send request for deletion is ignored) ......

    if(success){
        grid.getStore().reload();
    }
}

К сожалению, grid.getStore().reload() выше будет ошибкой, потому что в ExtJS 4 функция reload() больше не существует.

Так как перезагрузитьмагазин с таким же параметром ??

Спасибо.

Ответы [ 2 ]

2 голосов
/ 07 февраля 2012

Если я не ошибаюсь, функция load () теперь делает то же самое, что и reload () раньше. Попробуй.

вам нужно установить дополнительные параметры прокси вместо того, чтобы указывать его каждый раз при загрузке ():

см. http://www.sencha.com/forum/showthread.php?127673-Reload-Store-in-EXT-JS-4

0 голосов
/ 18 октября 2012

Также обратите внимание, что Ext JS не проверяет перед загрузкой, загружает ли хранилище данные.Я не уверен, почему это так, но это можно исправить, переопределив метод load () в Store или TreeStore.

load: function(options) {
    // Loading quickly will cause data in the panel to break
    if (!this.isLoading()) {
        this.callParent(arguments);
    }
},

У меня не было проблем с сетками, нос деревьями, если вы нажимаете кнопку обновления очень быстро, вы иногда получаете ошибку, и структура дерева ломается:

Uncaught TypeError: Cannot read property 'internalId' of undefined
...