【问题标题】:Kendo grid datasource nested and combined filtersKendo 网格数据源嵌套和组合过滤器
【发布时间】:2016-06-15 05:48:13
【问题描述】:

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

如果我有如下过滤器,那么 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 属性值上的剑道网格数据源。例如,这是我的 z 属性过滤器:

            zFilters.push(
                    { field: "z", operator: "eq", value: 3},
                    { field: "z", operator: "eq", value: 4});

            gridConfig.instance.dataSource.filter({
                 logic: "or",
                 filters: zFilters
            });

现在,我想组合这两个过滤器并将它们同时应用于我的剑道网格数据源。也就是说,我的最终结果是基于这个逻辑:

(x = 1) AND (y = 2) AND (z = 3 OR z = 4)

如何使用剑道过滤器做到这一点?

【问题讨论】:

    标签: filter kendo-grid


    【解决方案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}
                    ]
                }
            ]
        }
    );
    

    【讨论】:

      【解决方案2】:

      如果您混合了“或”和“和”过滤器,它必须采用的结构是

       {
         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)
      

      希望对你有帮助

      【讨论】:

      • 我已经测试过这种结构,但是,它不起作用。事实上,我有一个剑道网格的数据源,我将在本地对其进行过滤。
      猜你喜欢
      • 1970-01-01
      • 2012-11-14
      • 1970-01-01
      • 2013-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多