我已使用FiltersFeature.js插件成功配置了网格面板。我能够在列标题菜单项中看到过滤器选项。我正在使用字符串,列表和日期范围类型,只在本地过滤,而不是远程过滤。
行为按预期工作。例如,我有一个“状态”列,其中配置了一个过滤器(通过配置,而不是列):
filters: [{
type: 'list',
dataIndex: 'status',
options: ['New', 'Waiting', 'Reopened','Working']
}]
正确呈现options属性的每个项目的复选框列表。当我从列表中选择“新建”和“工作”时,网格将被过滤以显示匹配“新”或“工作”状态的记录。
现在,当我以编程方式添加过滤器时使用:
tasksGrid.filters.addFilters([{type: 'string', dataIndex: 'status', value: 'New'}]);
tasksGrid.store.load();
它可以将所有网格记录过滤到匹配状态“新建”。
问题是我无法弄清楚如何向addFilters方法添加多个参数,以获得“OR”搜索的内置行为,而不是“AND”搜索。
当使用标题菜单选择并将多个过滤器应用于单个列时,我可以通过getFilterData()方法看到filterData:
[Object
data: Object
type: "list"
value: Array[2]
0: "New"
1: "Waiting"
length: 2
__proto__: Array[0]
__proto__: Object
field: "status"
__proto__: Object
其中值设置为2个值的数组。但是,当我尝试做类似的事情时:
tasksGrid.filters.addFilters([{type: 'string', dataIndex: 'status', value: ['New','Waiting']}]);
我得到了filterData的以下结果:
[Object
data: Object
type: "string"
value: "New,Waiting"
__proto__: Object
field: "status"
__proto__: Object
我认为它是连接值,因为我使用了一种字符串,所以我尝试了一种'list',这就是它在filter config中的定义,我得到以下错误:
未捕获TypeError:无法调用未定义的方法'on'... ListMenu.js:83
任何帮助都会非常感谢!
谢谢,
赛斯
答案 0 :(得分:0)
我对你要做的事感到有些困惑。如果你只想设置过滤器的值,你可以使用它我相信:
tasksGrid.filters.getFilter('status').setValue(["New", "Waiting"]);
如果您在创建网格后尝试添加实际过滤器,我查看了ux.ListFilter和ux.ListMenu的文档,看起来您可以使用预先选定的某些过滤器创建它。我将不得不再挖一些代码来创建一个列表过滤器。