我有多个过滤器,我将在kendo网格数据源上应用。
如果我有一个如下所示的过滤器,那么<strong> 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
});
我的问题就在这里。我有另一个属性让我们说 z 这是一个值数组。我想用 OR 逻辑过滤z propery值上的kendo网格数据源。例如,这是我的z propery过滤器:
zFilters.push(
{ field: "z", operator: "eq", value: 3},
{ field: "z", operator: "eq", value: 4});
gridConfig.instance.dataSource.filter({
logic: "or",
filters: zFilters
});
现在,我想结合这两个过滤器并在我的kendo网格数据源上同时应用它们。这意味着我的最终结果基于这个逻辑:
(x = 1) AND (y = 2) AND (z = 3 OR z = 4)
如何使用kendo过滤器执行此操作?
答案 0 :(得分:1)
所有子过滤器必须位于数组中!这将起作用:
grid.dataSource.filter(
{
logic: "and",
filters: [
{
filters:[{ field: "x", operator: "eq", value: 1 }]
},
{
filters:[{ field: "y", operator: "eq", value: 2 }]
},
{
logic: "or",
filters:[
{ field: "z", operator: "eq", value: 3},
{ field: "z", operator: "eq", value: 4}
]
}
]
}
);
答案 1 :(得分:0)
如果您混合了“或”,那么它必须应用于小部件的结构。和&#39;和&#39;过滤器是
{
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 }]}
]
}
最后
grid.dataSource.filter(abovefilterobject)
希望有所帮助