-1

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

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

谢谢

4

1 回答 1

0

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

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

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 的作者

于 2021-08-11T12:30:45.430 回答