【问题标题】:how can I get the count of matches for filters of jqgrid如何获取 jqgrid 过滤器的匹配数
【发布时间】:2012-02-26 14:43:39
【问题描述】:

我有用于过滤 jqgrid 的下拉选择框(不使用内置导航栏,并且数据是本地的)。我想将网格中没有匹配项的那些变灰。

有没有办法执行查询以获取计数而不更新 ui 行,以便我可以初始化/更新下拉菜单以仅启用匹配项(或者更好地提供菜单中的匹配项数)

编辑: 为了澄清我想禁用/灰色我的过滤器菜单项而不是表格行项

【问题讨论】:

    标签: jqgrid filtering


    【解决方案1】:

    jqGrid 内部使用$.jgrid.from 方法将过滤器应用于数据。您想要实现它可能不仅仅是因为您写道:

    我想把网格中没​​有匹配的那些变灰。

    尽管如此,您想要的一切都可以实现。您将不得不编写一些使用$.jgrid.from($("#list")[0].p.data) 进行初始化的JavaScript 代码。然后您必须使用containslessOrEqualsandNotorNot 等方法构造查询。然后你应该应用关于var queryResults = query.select(); 的查询。如果您检查 queryResults 中的 id,您可以将不在集合中的所有项目设为灰色。

    我建议您阅读和调试 jqGrid 的 addLocalData 方法,其中包含您需要的所有内容。此外,我建议您在the line 上设置断点并检查matchresults 变量。这不是一个简单的原因,但如果您需要一些个人解决方案,您必须投入时间。

    更新:我对所描述的问题有更多了解。 My recent answerthe demo 演示如何解决您的问题。

    【讨论】:

    • 非常感谢,我应该澄清一下,我想将下拉菜单项而不是网格行变灰。因此,如果我的菜单有苹果、橙子、梨,而我的数据没有橙子,我会在菜单中显示该选项。所以用户会看到该类型不在数据集中。我想预先计算哪些过滤器没有匹配项并禁用菜单但不实际更新表行外观或显示的行。
    • 有什么方法可以访问 tojLinq 方法,将过滤器选项转换为匹配循环的字符串?
    • @claya: 不,您不能从外部调用tojLinq 方法,因为它在local 函数@ 中定义为local 函数987654337@。其他一些内部函数可以访问(参见here),但不能访问addLocalData。如果是我建议您检查源代码的原因。所以你必须使用“剪切和粘贴”方法,复制并可能减少你需要的代码。您可以使用filterToolbar 添加过滤器栏并调试addLocalData 在应用过滤器时的作用。然后你会看到你需要什么。
    • 我希望避免剪切和粘贴,以便能够使用它已经编码的相同功能来扩展插件。
    • 我一直在调试方法,看看搜索是如何完成的。我有过滤条件组对象,但看不到如何在没有 addLocalData 内部的 toJLinq 函数的情况下执行它。所以我有一个 jqgrid 的扩展方法
    猜你喜欢
    • 1970-01-01
    • 2012-04-28
    • 2016-02-23
    • 1970-01-01
    • 2019-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多