Extjs 7.2.0 - 同一字段上有多个过滤器的远程过滤问题

Extjs 7.2.0 - Remote Filtering problem with multiple filters on same field

我有一个 Ext 网格和存储。店铺字段为

fields: ['id', {
  name: 'name',
  type: 'string'
}, {
  name: 'dob',
  type: 'date'
}]

日期的相关网格列设置为

{
  xtype: 'datecolumn',
  dataIndex: 'dob',
  text: 'Date of Birth',
  format: 'd-m-Y',
  filter: 'date'
}

此处,filter 属性用于 gridfilters plugin

我还想像这样在 dob 字段上以编程方式应用过滤器 -

store.filter([{
  property: 'dob',
  value: new '01/17/1990',
  operators: 'gt'
},{
  property: 'dob',
  value: '01/17/2022',
  operators: 'lt'
}])

然而,尽管 gridfilter 插件可以在同一字段上使用多个过滤器,但以编程方式却不行。它仅应用数组中的最后一个过滤器。

使用 gridfilter 插件,我得到多个过滤器,例如 -

[
  {
    "property": "dob",
    "operator": "lt",
    "value": "18/01/1990"
  },
  {
    "property": "dob",
    "operator": "gt",
    "value": "18/01/2022"
  }
]

但是,当我以编程方式尝试时,我只得到 -

[
  {
    "property": "dob",
    "operator": "gt",
    "value": "18/01/2022"
  }
]

对此的任何建议都会非常有帮助。

我创建了一个 Sencha Fiddle 来演示这个问题。 Sencha Fiddle

您可以为同一个 属性 添加多个过滤器,方法是为过滤器设置不同的 id 属性。在您的代码中更改此设置:

if (from && to){
    var filters = [{
        id: 1,
        property: 'dob',
        operator: 'gt',
        value: from
    },{
        id: 2,
        property: 'dob',
        operator: 'lt',
        value: to
    }]

    store.filter(filters);
}

如果您在 fiddle 中更改它,在 Filters Applied 下您会看到两个过滤器都是这样设置的。不管怎样,我认为你需要稍微调整一下才能真正起作用,因为你的日期当前是以文本形式存储的。