【发布时间】:2021-08-12 00:10:09
【问题描述】:
有没有办法用 angular-slickgrid 过滤多列?
我有在不同区域显示相同信息的列,并且我希望用户能够使用一个过滤器来获得任何行匹配,而不管哪个区域(列)匹配。
谢谢
【问题讨论】:
有没有办法用 angular-slickgrid 过滤多列?
我有在不同区域显示相同信息的列,并且我希望用户能够使用一个过滤器来获得任何行匹配,而不管哪个区域(列)匹配。
谢谢
【问题讨论】:
简短的回答是“不”,您不能(但下面有更长的“是”选项),每个过滤器显示在每列顶部是有原因的,这是因为它们与该列相关联(通过循环遍历每个列定义,正在创建这些过滤器)。但是,您可以在过滤时使用另一列,使用 queryFieldFilter 或 queryFieldNameGetterFn,具体取决于数据,但它一次只关联到一列。
这是否意味着您根本无法做到这一点?不一定,您可以通过 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 的作者
【讨论】: