过滤器使用"OR"为单个列提供多个过滤器逻辑通过网格外的复选框/按钮
FiltersFeature multiple filters for a single column using "OR" logic via checkboxes/button outside of grid
我已经使用FiltersFeature.js插件成功配置了一个网格面板。我可以在列标题菜单项中看到过滤器选项。我使用字符串,列表和日期范围类型,只过滤本地,而不是远程。
行为按预期工作。例如,我有一个"状态"列,它配置了一个过滤器(通过配置,而不是列):
filters: [{
type: 'list',
dataIndex: 'status',
options: ['New', 'Waiting', 'Reopened','Working']
}]
正确呈现options属性的每个项的复选框列表。当我从列表中选择"新"answers"工作"时,网格被过滤以显示与"新"或"工作"状态匹配的记录。
现在,当我以编程方式添加过滤器时,使用如下代码:
tasksGrid.filters.addFilters([{type: 'string', dataIndex: 'status', value: 'New'}]);
tasksGrid.store.load();
它的工作原理是过滤所有的网格记录到一个匹配的状态"新"。
问题是我无法弄清楚如何向addFilters方法添加多个参数,以获得"或"搜索而不是"与"搜索的相同内置行为。
当使用标题菜单选择并对单个列应用多个过滤器时,我可以通过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
我认为它是连接值,因为我使用了一种类型的字符串,所以我尝试了一种类型的"列表",这是它在过滤器配置中定义的,我得到以下错误:
Uncaught TypeError: Cannot call method 'on' of undefined…ListMenu.js: 83
任何帮助将非常感激!
谢谢,Seth
我对你想做的事情有点困惑。如果你只是想设置过滤器的值,我相信你可以使用这个:
tasksGrid.filters.getFilter('status').setValue(["New", "Waiting"]);
如果您试图在创建网格后添加实际的过滤器,我查看了ux文档。ListFilter和ux。它看起来不像你可以用预先选择的过滤器来创建它。为了创建列表过滤器,我还需要再深入挖掘一些代码。
- 铬:“;未捕获的语法错误:意外的标记:"
- 为什么我的d3.jsselectAll+过滤器没有过滤
- Angularjs-utils高亮过滤器在搜索时破坏应用程序
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 检测电话窃听,即:<a href="电话:xxx">在UIWebview上
- 使用“+="操作人员
- Angular-表的多列过滤器
- //而不是在src=“”上使用http://"属性
- "未捕获的语法错误:意外的标记}"
- 可以<脚本类型=“;text/javascript”>window.location=“/"</
- "实例范围”;TypeScript类的getter/setter
- Javascript复选框函数:;缺少:在属性id之后"
- "“;变量未引用正确的对象
- 如何“;过滤器”;或者以其他方式重构该数据
- "日期“;AJAX请求返回的类型值未定义
- 得到"TypeError:无法读取属性'filename'未定义的“;调用“npm start
- Soundcloud api"未捕获的类型错误:无法读取属性'uri'“未定义”;
- 如何将事件处理程序与“;delegate()"使用属性过滤器
- Angularjs过滤器错误:";错误:未知提供程序:textProvider"