【发布时间】:2012-02-26 14:43:39
【问题描述】:
我有用于过滤 jqgrid 的下拉选择框(不使用内置导航栏,并且数据是本地的)。我想将网格中没有匹配项的那些变灰。
有没有办法执行查询以获取计数而不更新 ui 行,以便我可以初始化/更新下拉菜单以仅启用匹配项(或者更好地提供菜单中的匹配项数)
编辑: 为了澄清我想禁用/灰色我的过滤器菜单项而不是表格行项
【问题讨论】:
我有用于过滤 jqgrid 的下拉选择框(不使用内置导航栏,并且数据是本地的)。我想将网格中没有匹配项的那些变灰。
有没有办法执行查询以获取计数而不更新 ui 行,以便我可以初始化/更新下拉菜单以仅启用匹配项(或者更好地提供菜单中的匹配项数)
编辑: 为了澄清我想禁用/灰色我的过滤器菜单项而不是表格行项
【问题讨论】:
jqGrid 内部使用$.jgrid.from 方法将过滤器应用于数据。您想要实现它可能不仅仅是因为您写道:
我想把网格中没有匹配的那些变灰。
尽管如此,您想要的一切都可以实现。您将不得不编写一些使用$.jgrid.from($("#list")[0].p.data) 进行初始化的JavaScript 代码。然后您必须使用contains、lessOrEquals、andNot、orNot 等方法构造查询。然后你应该应用关于var queryResults = query.select(); 的查询。如果您检查 queryResults 中的 id,您可以将不在集合中的所有项目设为灰色。
我建议您阅读和调试 jqGrid 的 addLocalData 方法,其中包含您需要的所有内容。此外,我建议您在the line 上设置断点并检查match 和results 变量。这不是一个简单的原因,但如果您需要一些个人解决方案,您必须投入时间。
更新:我对所描述的问题有更多了解。 My recent answer 和 the demo 演示如何解决您的问题。
【讨论】:
tojLinq 方法,因为它在local 函数@ 中定义为local 函数987654337@。其他一些内部函数可以访问(参见here),但不能访问addLocalData。如果是我建议您检查源代码的原因。所以你必须使用“剪切和粘贴”方法,复制并可能减少你需要的代码。您可以使用filterToolbar 添加过滤器栏并调试addLocalData 在应用过滤器时的作用。然后你会看到你需要什么。