过滤器使用"OR"为单个列提供多个过滤器逻辑通过网格外的复选框/按钮

FiltersFeature multiple filters for a single column using "OR" logic via checkboxes/button outside of grid

本文关键字:quot 过滤器 网格 复选框 按钮 OR 单个列      更新时间:2023-09-26

我已经使用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。它看起来不像你可以用预先选择的过滤器来创建它。为了创建列表过滤器,我还需要再深入挖掘一些代码。