Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript filters为单个列提供多个过滤器,使用;或;通过电网外的复选框/按钮进行逻辑_Javascript_Extjs - Fatal编程技术网

Javascript filters为单个列提供多个过滤器,使用;或;通过电网外的复选框/按钮进行逻辑

Javascript filters为单个列提供多个过滤器,使用;或;通过电网外的复选框/按钮进行逻辑,javascript,extjs,Javascript,Extjs,我已经使用FiltersFeature.js插件成功配置了网格面板。我可以在我的列标题菜单项中看到过滤器选项。我使用字符串、列表和日期范围类型,只在本地过滤,而不是远程过滤 该行为按预期工作。例如,我有一列“Status”,其中配置了一个过滤器(通过配置,而不是列): 正确呈现选项属性每个项的复选框列表。当我从列表中选择“新建”和“正在工作”时,网格将被过滤以显示与“新建”或“正在工作”状态匹配的记录 现在,当我以编程方式添加过滤器时,使用如下方式: tasksGrid.filters.addF

我已经使用FiltersFeature.js插件成功配置了网格面板。我可以在我的列标题菜单项中看到过滤器选项。我使用字符串、列表和日期范围类型,只在本地过滤,而不是远程过滤

该行为按预期工作。例如,我有一列“Status”,其中配置了一个过滤器(通过配置,而不是列):

正确呈现选项属性每个项的复选框列表。当我从列表中选择“新建”和“正在工作”时,网格将被过滤以显示与“新建”或“正在工作”状态匹配的记录

现在,当我以编程方式添加过滤器时,使用如下方式:

tasksGrid.filters.addFilters([{type: 'string', dataIndex: 'status', value: 'New'}]);
tasksGrid.store.load();
tasksGrid.filters.addFilters([{type: 'string', dataIndex: 'status', value: ['New','Waiting']}]);
它可以将所有网格记录过滤到匹配状态“New”

问题是我无法理解如何向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'}]);
tasksGrid.store.load();
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
我想它是连接值的,因为我使用了一种字符串类型,所以我尝试了一种“列表”类型,这是在过滤器配置中定义的,我得到了以下错误:

未捕获的TypeError:无法调用未定义的。。。ListMenu.js:83

任何帮助都将不胜感激

谢谢


赛斯

我对你想做什么有点困惑。如果您只想设置过滤器的值,我相信您可以使用:

tasksGrid.filters.getFilter('status').setValue(["New", "Waiting"]);
如果您试图在创建网格后添加实际的过滤器,我查看了ux.ListFilter和ux.ListMenu的文档,它看起来不像您可以使用预先选择的某些过滤器来创建它。为了创建一个列表过滤器,我还需要进一步挖掘代码