如何清除Ext JS存储而不影响/删除服务器中的记录

时间:2011-02-19 22:58:12

标签: extjs

我有一个Ext JS网格商店,autosave设置为false

我想只清除本地商店,而不影响/删除服务器中的记录。

如果我尝试store.removeAll(),那么当下一次商店写入发生时,所有记录都将被删除。

如何通过清除所有待处理的更改后调用store.removeAll

4 个答案:

答案 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();

此方法清除所有已修改记录的所有未完成更改。这将拒绝所有待处理的更改。