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

25
我有一个 Ext JS Grid Store,autosave 设置为 false
我想清除仅本地存储,而不影响/删除服务器上的记录。
如果我尝试使用 store.removeAll(),则在下一次存储写入发生时,所有记录都将被删除。
如何调用 store.removeAll 并在其后清除所有挂起的更改?

你能提供你的商店和代理代码吗? - JamesHalsall
4个回答

52
Store.loadData([],false);

这个语句会清除本地缓存并不将更改发送到服务器端。


太棒了!我之前不知道这个,一直在使用 removeAll() - Aman Gupta

6

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
对于 ExtJS 4.1 版本,这将清除缓存(预取数据),因此下一次加载(或 loadPage)时,store 将从头开始重新加载页面:
store.pageMap.clear();

之前是这样做的:
store.prefetchData.clear();

1

好的,从我的理解来看,您想忽略本地存储的更改并不将其发送到服务器端。您尝试使用过以下方法吗:

myStore.rejectChanges();

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


正是我所需要的。 - David

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接