【问题标题】:Angular Slickgrid filtering on multiple columns多列上的 Angular Slickgrid 过滤
【发布时间】:2021-08-12 00:10:09
【问题描述】:

有没有办法用 angular-slickgrid 过滤多列?

我有在不同区域显示相同信息的列,并且我希望用户能够使用一个过滤器来获得任何行匹配,而不管哪个区域(列)匹配。

谢谢

【问题讨论】:

    标签: angular angular-slickgrid


    【解决方案1】:

    简短的回答是“不”,您不能(但下面有更长的“是”选项),每个过滤器显示在每列顶部是有原因的,这是因为它们与该列相关联(通过循环遍历每个列定义,正在创建这些过滤器)。但是,您可以在过滤时使用另一列,使用 queryFieldFilterqueryFieldNameGetterFn,具体取决于数据,但它一次只关联到一列。

    这是否意味着您根本无法做到这一点?不一定,您可以通过 SlickGrid DataView dataView.setFilter(myFilter); 提供不同的 filter 实现,但如果这样做,您将绕过所有列过滤器(换句话说,当您覆盖DataView 过滤器方法),但通过将其设置为全局过滤器可能对您来说是可以接受的。您可以使用此 SlickGrid Example 查看代码,它有一个具有多个条件的外部过滤器,可能对您有用。

    function myFilter(item, args) {
      if (item["percentComplete"] < args.percentCompleteThreshold) {
        return false;
      }
    
      if (args.searchString != "" && item["title"].indexOf(args.searchString) == -1) {
        return false;
      }
    
      return true;
    }
    

    基本上我想说的是,您确实可以选择重写自己的过滤器实现,但您肯定会破坏默认的列过滤器实现。我通常从不这样做,因为只有 1 个全局搜索过滤器需要更多的工作,而且效果也不佳,但这取决于您。

    在网格中添加该列并要求用户按区域过滤它会更容易

    请注意,我是 Angular-Slickgrid 的作者

    【讨论】:

    • 看起来很完美。我只在选项卡中使用另一个过滤器,所以我不介意将它们组合成一个,在这种特定情况下,恕我直言。我会试一试,感谢您的帮助和伟大的库!
    • 是的,它可能是可行的,也是 Angular-Slickgrid 存在的原因当然是让它在 Angular 中工作,但也因为 SlickGrid 就像宜家一样,它有很多可定制性,但你必须把所有的部分都放在一起一起,对于过滤器和库的更多部分也是如此,您仍然可以选择在某些部分以不同的方式组装它。
    猜你喜欢
    • 2014-01-09
    • 2015-12-13
    • 2012-06-15
    • 1970-01-01
    • 2019-05-04
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    • 2018-03-13
    相关资源
    最近更新 更多