我有一个Ext JS网格商店,autosave
设置为false
。
我想只清除本地商店,而不影响/删除服务器中的记录。
如果我尝试store.removeAll()
,那么当下一次商店写入发生时,所有记录都将被删除。
如何通过清除所有待处理的更改后调用store.removeAll
?
答案 0 :(得分:51)
Store.loadData([],false);
此语句删除本地缓存,不向服务器端发送更改
答案 1 :(得分:5)
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 :(得分:2)
对于ExtJS 4.1,这将清除缓冲区缓存(预取数据),因此下次加载(或loadPage)时,store将从头开始重新加载页面:
store.pageMap.clear();
以前做过:
store.prefetchData.clear();
答案 3 :(得分:1)
好的,根据我的理解,您希望忽略对本地存储的更改,而不是将其发送到服务器端。你尝试过使用过:
myStore.rejectChanges();
此方法清除所有已修改记录的所有未完成更改。这将拒绝所有待处理的更改。