Как очистить хранилище Ext JS, не затрагивая и не удаляя записи на сервере - PullRequest
24 голосов
/ 20 февраля 2011

У меня есть хранилище сетки Ext JS с autosave, установленным на false.

Я хочу очистить ТОЛЬКО локальное хранилище, не затрагивая / не удаляя записи на сервере.

Если я попытаюсь store.removeAll(), то при следующей записи в хранилище все записи будут удалены.

Как позвонить store.removeAll с очисткой всех ожидающих изменений после него?

Ответы [ 4 ]

51 голосов
/ 29 сентября 2011
Store.loadData([],false);

Этот оператор отбрасывает локальный кеш и не отправляет изменения на серверную сторону

5 голосов
/ 12 февраля 2014

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

http://docs.sencha.com/extjs/3.4.0/#!/api/Ext.data.Store-method-removeAll

gridPanel.store.removeAll(true);

Из кода комментариев:

    if (silent !== true) {  // <-- prevents write-actions when we just want to clear a store.
        this.fireEvent('clear', this, items);
    }

Если вы хотите вручную обновить GridPanel, чтобы очистить все строки, которые вам нужно вызвать:

gridPanel.view.refresh();
2 голосов
/ 05 сентября 2012

Для ExtJS 4.1 это очистит буферный кеш (предварительно выбранные данные), поэтому при следующей загрузке (или loadPage) хранилище перезагрузит страницы с нуля:

store.pageMap.clear();

, что ранее было сделано как:

store.prefetchData.clear();
1 голос
/ 20 февраля 2011

Хорошо, насколько я понимаю, вы хотите игнорировать изменения в локальном хранилище и не отправлять его на серверную часть. Вы пробовали использовать:

myStore.rejectChanges();

Этот метод очищает все ожидающие изменения во всех измененных записях. Это отклонит все ожидающие изменения.

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