Ответ 1
Store.loadData([],false);
Этот оператор отбрасывает локальный кеш и не отправляет изменения на стороне сервера
У меня есть хранилище сетки Ext JS с autosave
, установленным на false
.
Я хочу очистить ТОЛЬКО локальный магазин, не затрагивая/удаляя записи на сервере.
Если я попробую store.removeAll()
, тогда, когда произойдет следующая запись в хранилище, все записи будут удалены.
Как вызвать store.removeAll
с очисткой всех ожидающих изменений после него?
Store.loadData([],false);
Этот оператор отбрасывает локальный кеш и не отправляет изменения на стороне сервера
У 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();
Хорошо, из того, что я понимаю, вы хотите игнорировать изменения в локальном хранилище и не отправлять его на сервер. Вы пробовали использовать:
myStore.rejectChanges();
Этот метод очищает все выдающиеся изменения во всех измененных записях. Это отклонит все ожидающие изменения.
Для ExtJS 4.1 это очистит буферный кеш (предварительно загруженные данные), поэтому при следующем загрузке (или загрузке) хранилище перезагрузит страницы с нуля:
store.pageMap.clear();
который ранее выполнялся как:
store.prefetchData.clear();