我正在使用最新的jqGrid版本,我想知道是否可以使用自定义规则进行本地过滤(请参阅下面的示例)。首先,可以通过应用
打开过滤器工具栏 jQuery("#grid").jqGrid('filterToolbar', options);
过去我手动实现了这个(我目前使用的版本不支持本地过滤,所以我根据我的需要添加了这个功能)现在,在更新到最新版本之后,我问自己jqGrid是否提供此功能默认情况下的功能(不是本地过滤,它做的,但自定义过滤规则)作为功能在过去几个月显着增加。我阅读了文档并搜索了互联网,但没有找到合适的例子。
这是我想要实现的一个例子。
有一列First Name
,其中包含所显示人员的名字。
Stefan
Stephan
Stephano
Stelios
Philip
Phillip
Philipp
Ivan
Iwan
...
现在,用户在列Ste
的过滤栏中输入First Name
,默认过滤算法的结果应为:)
Stefan
Stephan
Stephano
Stelios
到目前为止一切顺利。但是,如果我想要显示与其相似的名称呢?我希望用户输入Ste*an*
以仅显示
Stefan
Stephan
Stephano
所以你看,*
代表任何字符的通配符零次或多次。此外,我希望用户能够输入Ste?an*
结果
Stefan
其中?
表示任意一个字符。最后一个要求是使过滤更容忍并且不仅匹配孔线(开始和结束,相当于正则表达式),而是匹配列值(如果它包含输入的文本,即e*o
匹配
Stephano
Stelios
如果你能给我一个*
通配符的提示,其他问题应该是正确的。
提前致谢
启
答案 0 :(得分:3)
在我的旧答案here和here中,我描述了如何实现自定义过滤。
如果您在the demo中输入“客户”列过滤器中的“ev”,则会看到以下内容:
您可以轻松修改演示,例如“Stephan”和“Stefan”等效。
我个人主要在defaultSearch: 'cn'
选项中使用filterToolbar
。与ignoreCase: true
的使用一起,它遵循非常好的用户体验。在我个人看来,这种过滤是足够好的。更高级的用户可以使用高级搜索来创建过滤器,例如“开头”,“Ste”和“包含”“an”而不是Ste*an*
。
尽管如此,您可以使用my old demo中的提示来覆盖jqGrid使用的某些internal searching methods。