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

时间:2016-06-15 05:48:13

标签: filter kendo-grid

我有多个过滤器,我将在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过滤器执行此操作?

2 个答案:

答案 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)

希望有所帮助