Angular 多列 Slickgrid 过滤

Angular Slickgrid filtering on multiple columns

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

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

谢谢

简短的回答是不,你不能(但下面有一个较长的“是”选项),每个过滤器都显示在每列顶部是有原因的,这是因为它们与所述列相关联(通过循环遍历每个列定义,正在创建这些过滤器)。但是,您可以在过滤时使用另一列,根据数据使用 queryFieldFilterqueryFieldNameGetterFn,但它一次仅与 1 列相关联。

这是否意味着您根本无法做到?不一定,您可以通过 SlickGrid DataView dataView.setFilter(myFilter); 提供不同的 filter 实现,但如果您这样做,那么您将绕过所有列过滤器(换句话说,列的 none当您覆盖 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

的作者