jqGrid自定义过滤,内置过滤工具栏

时间:2011-08-26 08:44:26

标签: javascript jquery jqgrid

我正在使用最新的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

如果你能给我一个*通配符的提示,其他问题应该是正确的。

提前致谢

1 个答案:

答案 0 :(得分:3)

在我的旧答案herehere中,我描述了如何实现自定义过滤。

如果您在the demo中输入“客户”列过滤器中的“ev”,则会看到以下内容:

enter image description here

您可以轻松修改演示,例如“Stephan”和“Stefan”等效。

我个人主要在defaultSearch: 'cn'选项中使用filterToolbar。与ignoreCase: true的使用一起,它遵循非常好的用户体验。在我个人看来,这种过滤是足够好的。更高级的用户可以使用高级搜索来创建过滤器,例如“开头”,“Ste”和“包含”“an”而不是Ste*an*

尽管如此,您可以使用my old demo中的提示来覆盖jqGrid使用的某些internal searching methods