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
下您会看到两个过滤器都是这样设置的。不管怎样,我认为你需要稍微调整一下才能真正起作用,因为你的日期当前是以文本形式存储的。
我有一个 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
下您会看到两个过滤器都是这样设置的。不管怎样,我认为你需要稍微调整一下才能真正起作用,因为你的日期当前是以文本形式存储的。