在ExtJS中清除过滤器后显示网格中的所有行
我有一个数据存储和一个网格。我在商店中添加了过滤器,当我在网格中看到结果时,它们可以正常工作。但是一旦我禁用了所有过滤器,或者从我的存储中清除了它们,我就想查看网格中的所有行,而不必从web服务重新加载它们,这是一项繁重的任务。所有数据都已从服务中提取,无需重新加载在ExtJS中清除过滤器后显示网格中的所有行,extjs,extjs4,extjs-grid,extjs-stores,Extjs,Extjs4,Extjs Grid,Extjs Stores,我有一个数据存储和一个网格。我在商店中添加了过滤器,当我在网格中看到结果时,它们可以正常工作。但是一旦我禁用了所有过滤器,或者从我的存储中清除了它们,我就想查看网格中的所有行,而不必从web服务重新加载它们,这是一项繁重的任务。所有数据都已从服务中提取,无需重新加载 我该怎么做?商店里有什么功能吗?我怀疑你的网格视图没有刷新。试试这个: mygrid.getView().refresh()已经有一个类似的问题,答案正确。简言之,在将remoteFilter设置为false后,需要调用不带参数的f
我该怎么做?商店里有什么功能吗?我怀疑你的网格视图没有刷新。试试这个:
mygrid.getView().refresh()
已经有一个类似的问题,答案正确。简言之,在将remoteFilter设置为false后,需要调用不带参数的filter方法:
store.remoteFilter = false;
store.clearFilter();
store.remoteFilter = true;
store.filter();
这里有一个JSFIDLE:让我直截了当地说,您在第一次加载时从web服务加载所有数据,这可能意味着您已经将存储设置为一个
ajax
代理?但是,如果您一下子加载了所有内容,为什么不直接调用Ajax,并将您的存储变成内存存储呢?您是否依赖后端进行过滤/排序?是的,我一次通过一个http请求加载服务中的所有数据。它有有限数量的实体,所以可以这样做。我在本地过滤所有数据,只需更改过滤器。而且商店已经是内存了。不,我不依赖后端进行过滤/排序OK,所以听起来你可以按照我说的做。。。或者我还缺少其他一些信息?我应该调用什么函数来再次查看网格中的所有数据?store.load()?我在一个全局变量中有所有数据。我尝试了store.filter(),但没有参数,它不起作用。我尝试了它。商店是空的。这就是为什么我在网格中看不到任何东西。可能是因为我使用loadData()而不是load()?没有使reload()工作的初始设置?我相信这就是它的作用,不是吗?所以您不必直接设置它们的公共变量remoteFilter
。@incutonez抱歉,但似乎不是。这里有一个例子。但是如果取消注释,代码就开始工作了。如果我理解正确的话,clearFilter只是从存储中删除过滤器,但不刷新数据快照。Filter方法基于一组新的筛选器(在本例中为空筛选器)和remoteFilter变量来计算新快照,以防止存储从远程服务器获取数据。文档状态“对于远程筛选存储,这意味着筛选器集合已清除,但存储不会从服务器重新加载”,这是指如果您向clearFilter提供true
。否则,它应该重新加载数据。。。除非我没有完全理解这个问题。