我使用Ext.data.Store
方法向store.filter(string, string)
明确添加过滤器。
但是,我无法弄清楚如何从商店中删除过滤器。因此,即使在使用store.load()
重新加载后,过滤器也始终适用。我看到的唯一解决方法是重新启动整个Web应用程序。
如何从Ext.data.Store
删除过滤器?
答案 0 :(得分:31)
除了Mchi的回答之外,我想说可以删除特定过滤器(clearFilter()将其全部删除)。
为此,请使用:
store.filter('property_to_filter','value')
方法
store.filters.add('filtersId', new Ext.util.Filter({
property: 'property_to_filter',
value: 'value'
}));
store.load();
删除过滤器使用:
store.filters.removeAtKey('filtersId');
在4.2.0中添加/删除特定过滤器的方法:
store.addFilter({
id: 'filtersId',
property: 'property_to_filter',
value: 'value'
});
store.removeFilter('filtersId');
有关详细信息,请查看文档:{{3}},Ext.data.Store.addFilter
答案 1 :(得分:14)
答案 2 :(得分:4)
编辑:我刚刚发现(浏览API以获取其他内容)它更容易。有一个参数(布尔值),如果为true,则在使用remoteFilter时不会重新加载数据...
所以这里是:
store.clearFilter(true);
store.filter(...);
我简直不敢相信我已经挣扎了这么久。在我查看的每个论坛中,我看到clearFilter对远程过滤没有用,而我所要做的只是添加“true”......
原帖:
IMO,这绝对不令人满意。 使用服务器后端获取数据(尽可能多),使用“你需要
clearFilter()
”
remoteSort
和remoteFilter
+分页来管理大型结果集时,它甚至无用。
在重新应用过滤器之前,调用clearFilter()
实际上会重新加载数据。因此,每次应用过滤器时都会发送2个ajax请求。这已经困扰了很长一段时间。
你所要做的就是:
store.filters.clear(); // Which is what clearFilter() does just before reloading the data...
store.filter(...);