首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iggrid过滤在多个列上动态添加过滤器(ignite-ui)

iggrid过滤在多个列上动态添加过滤器(ignite-ui)
EN

Stack Overflow用户
提问于 2015-02-27 06:53:31
回答 1查看 1.8K关注 0票数 1

我想根据URL参数对多个iggrid列应用过滤器。下面的代码只显示最后一个过滤器。忽略或覆盖之前设置的过滤条件。

代码语言:javascript
复制
  //value is multiple columns filter details separated by ;
  var columns = value.split(";")
  for (i = 0; i < columns.length; i++) {
   state_grid.igGridFiltering("filter", [{ fieldName: columns[i][0], expr: columns[i][2], cond: columns[i][1] }]);
  }

我浏览了这个iggrid forum,发现可以应用多个过滤器,如下所示:

代码语言:javascript
复制
 $("#grid1").igGridFiltering("filter", [
 {fieldName: "MakeFlag", expr: true, cond: "true" , logic: "AND"},
 {fieldName: "ProductID", expr: 3, cond: "equals", logic: "OR"}
 ]);

如果我硬编码过滤条件,它工作得很好,并且过滤文本显示在所有列上。我的问题是如何在jQuery中动态生成它并将其传递给igGridFiltering事件。必须根据URL查询字符串加载这些条件。可以这样做吗:

代码语言:javascript
复制
 var expression='';
 for (i = 0; i < columns.length; i++) {
    var vl = columns[i].split('_');
    expression += '{ fieldName:'+ vl[0]+', expr:'+ vl[2]+', cond:'+ vl[1]+' },';
 }
 state_grid.igGridFiltering("filter", [expression]);

请在这方面提供帮助。

EN

回答 1

Stack Overflow用户

发布于 2015-02-28 00:31:36

经过几次尝试,我终于找到了答案。基本上,我创建了一个多维数组并将其传递给网格过滤事件。代码如下:

代码语言:javascript
复制
  var columns = value.split(";"), i, expression = [];

    for (i = 0; i < columns.length; i++) {
        var data = {},
            vl = columns[i].split('_');

        data.fieldName = vl[0];
        data.expr = vl[2];
        data.cond = vl[1];
        expression.push(data);
    }

    state_grid.igGridFiltering("filter", expression);

这段代码似乎可以正常工作,没有任何问题。如果有人找到更好的解决方案,请让我知道。

谢谢。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28754377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档