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

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

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

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

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

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

4b9b3361

Ответ 1

Store.loadData([],false);

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

Ответ 2

У 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();

Ответ 3

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

myStore.rejectChanges();

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

Ответ 4

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

store.pageMap.clear();

который ранее выполнялся как:

store.prefetchData.clear();