Kendo 网格数据源嵌套和组合过滤器

Ped*_*ram 5 filter kendo-grid

我有多个过滤器将应用于剑道网格数据源。

如果我有如下所示的过滤器,则一切正常,其中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)

希望能帮助到你