向商店添加“永久”过滤器,直到我手动调用clearFilter

时间:2012-08-12 19:28:52

标签: extjs extjs4.1 extjs-mvc

我正在使用商店来获取所有徒步旅行者的专业(因此徒步旅行者有很多专业化)。但是,我有一个详细信息窗口,其中为当前选定的徒步旅行者添加/删除/显示此专业(是的,它是一个详细信息窗口)。

我的问题是我的商店为所有徒步旅行者获取数据,但我希望它在详细窗口启动时显示给定的徒步旅行者的数据。另请注意,我在数据网格中显示数据,因此用户可能可以添加过滤器,我注意到如果我添加带有store.filter({...})的过滤器并且用户添加了带数据网格的过滤器,我的过滤器将被删除(所以基本上他们没用了。

我应该使用哪种方法?你有什么建议吗?我想为每个徒步旅行者准备一个商店,但我不喜欢这个解决方案。

编辑1: 我还注意到我无法像数据网格构建过滤器一样创建过滤器:

Ext.create('Ext.util.Filter', {
      type: 'numeric',
      comparison: 'eq',
      field: 'hiker_id',
      property: 'hiker_id',
      value: me.hiker.get('id'),
      root: 'data'
    })

这很无聊,因为我在服务器端增加了一个解析网格过滤器的功能。

2 个答案:

答案 0 :(得分:2)

我们只是将json格式的过滤器提供给商店的额外参数。并解析后端。在分页或刷新网格时,额外的参数保持不变。

grid.getStore().getProxy().extraParams = { filter: yourFilter };

答案 1 :(得分:1)

- 您的用户如何使用过滤器?

store.filter接受数组和函数,因此您可以使用它做很多事情,而不会实际处理服务器上的数据。 (例如,管理一个传递给过滤器的数组,对某个对象进行测试,或其他什么)

永久过滤器?不是那么多,但是因为你可以添加多个过滤器等,所以跟踪过滤器的位置是相对微不足道的。

http://docs.sencha.com/ext-js/4-1/#!/api/Ext.data.Store-method-filter