【问题标题】:jqGrid custom filtering with build in filtering toolbar带有内置过滤工具栏的 jqGrid 自定义过滤
【发布时间】:2011-08-26 08:44:25
【问题描述】:

我正在使用最新的 jqGrid 版本,我想知道是否可以使用自定义规则进行本地过滤(参见下面的示例)。首先,可以通过应用打开过滤器工具栏

jQuery("#grid").jqGrid('filterToolbar', options);

过去我是手动实现的(我目前使用的版本不支持本地过滤,所以我根据自己的需要添加了这个功能),现在更新到最新版本后,我问自己 jqGrid 是否提供这个默认情况下的功能(不是本地过滤,而是自定义过滤规则),因为该功能在过去几个月中显着增加。我阅读了文档并搜索了互联网,但没有找到合适的示例。

这是我想要实现的示例。

有一列First Name 包含显示人员的名字。

Stefan
Stephan
Stephano
Stelios
Philip
Phillip
Philipp
Ivan
Iwan
...

现在用户在First Name列的过滤栏中输入Ste,默认过滤算法的结果应该是:)

Stefan
Stephan
Stephano
Stelios

到目前为止一切顺利。但是,如果我想显示拼写相似的名称怎么办?我希望用户输入Ste*an* 只显示

Stefan
Stephan
Stephano

所以你看,* 代表任意字符零次或多次的通配符。此外,我希望用户能够输入 Ste?an* 导致

Stefan

其中? 表示任何字符恰好出现一次。最后一个要求是使过滤更加宽容,不仅匹配孔线(开始和结束,相当于正则表达式),而且匹配包含输入文本的列值,即e*o匹配

Stephano
Stelios

如果您可以使用* 通配符给我一个提示,其他问题应该会自行解决。

提前致谢

【问题讨论】:

    标签: javascript jquery jqgrid


    【解决方案1】:

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

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

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

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

    不过你可以使用 my old demo 的想法来覆盖 jqGrid 使用的一些 internal searching methods

    【讨论】:

    • 嗨奥列格,因为这个答案部分帮助了我,我“接受”它。由于我们的客户希望我们支持 * 和 ?我们必须自己添加这个功能。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2016-09-12
    • 1970-01-01
    • 1970-01-01
    • 2013-05-21
    • 2013-06-27
    • 2013-01-14
    • 2011-01-27
    • 1970-01-01
    相关资源
    最近更新 更多