我有多个过滤器将应用于剑道网格数据源。
如果我有如下所示的过滤器,则一切正常,其中gridConfig是我的剑道网格的配置:
var mainFilters = [];
mainFilters.push({
field: "x",
operator: "eq",
value: 1
});
mainFilters.push({
field: "y",
operator: "eq",
value: 2
});
gridConfig.instance.dataSource.filter({
logic: "and",
filters: mainFilters
});
Run Code Online (Sandbox Code Playgroud)
我的问题就出在这里。我有另一个属性,假设z是一个值数组。我想用OR逻辑过滤 z 属性值上的剑道网格数据源。例如,这是我的 z 属性过滤器:
zFilters.push(
{ field: "z", operator: "eq", value: 3},
{ field: "z", operator: "eq", value: 4});
gridConfig.instance.dataSource.filter({
logic: "or",
filters: zFilters
});
Run Code Online (Sandbox Code Playgroud)
现在,我想组合这两个过滤器并将它们同时应用到我的剑道网格数据源上。这意味着我的最终结果是基于这样的逻辑:
(x = 1) AND (y = 2) AND (z = 3 OR z = 4)
Run Code Online (Sandbox Code Playgroud)
我怎样才能用剑道过滤器做到这一点?
小智 1
如果您混合了“或”和“与”过滤器,则必须将其应用于小部件的结构是
{
logic: "and",
filters: [
{ field: "x", operator: "eq", value: 1},
{ field: "y", operator: "eq", value: 2},
{ logic: "or", filters: [{ field: "z", operator: "eq",value: 3 }, { field: "z", operator: "eq",value: 4 }]}
]
}
Run Code Online (Sandbox Code Playgroud)
最后
grid.dataSource.filter(abovefilterobject)
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你