2016-06-15 63 views
1

我有多个过滤器,我将应用在剑道网格数据源上。Kendo网格数据源嵌套和组合过滤器

如果我有像下面的过滤器,一切都还好这里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这是一个值的数组。我想用逻辑在z Propery值上过滤kendo网格数据源。例如,这里是我的小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) 

我怎样才能用剑道过滤器做到这一点?

回答

0

它必须在结构被应用到窗口小部件,如果你有混合“或”,“与”过滤器是

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

希望它有助于

+0

你的逻辑似乎不正确! – Pedram

+0

我已经测试了这样的结构,但是,它不起作用。事实上,我有一个kendo网格的数据源,我将在本地过滤它。 – Pedram