在初始加载时获取带有 postData 过滤器的 jqGrid,以仅显示客户端过滤行
Getting a jqGrid with postData filter on initial load to only display client-side filtered rows
我们有一个jqGrid,它最初通过内置的ajax fetch获取其行,返回一个json
对象。 然后,我们使用自定义函数在客户端进行过滤/搜索,以构建postData过滤器,然后使用它们来设置filterToolbar小部件以匹配。
我们的问题是,对于某些用例,初始页面加载将设置postData过滤器,但网格不会对它们起作用。 例如,我们可能有一个过滤器用于"列 A='foo' AND 列 B='bar'",在初始页面加载时,filterToolbar 小部件反映了这一点,但网格显示所有行。 为了让网格作用于postData过滤器,我们必须使网格重新加载。 这将生成可视化 UI 工件,我们的用户会看到完整的网格,半秒后网格更新为仅显示筛选的行。
从本质上讲,我们正在做的是
loadcomplete: function (data) {
if (ifirstTime) {
// at this point jqGrid("getGridParam", "postData") contains filters set from cookies
$grid.jqGrid("setGridParam", { datatype: "local" });
setTimeout(function () {
$this.trigger("reloadGrid");
}, 100);
firstTime = false;
}
// the grid shows all rows now. after the timeout above fires the
// grid will be updated to show the filtered rows only.
我们尝试在 beforeProcessing
事件中手动设置 jqGrid 数据,以及其他一些技巧来尝试避免重新加载网格。 看起来能够调用埋藏在jqGrid中的populate()
方法可能会有所帮助,但是获得能够调用它的上下文一直具有挑战性。
我遇到的大多数其他答案都涉及服务器端过滤,而客户端答案似乎满足于这种网格重新加载方法的少数答案。
有没有办法让jqGrid在数据类型json
时通过其常规方法加载其数据,然后在初始网格渲染之前应用客户端postData
过滤器。 我们希望筛选的网格是用户首先看到的内容,而不是最初看到未筛选的网格。
存在筛选器的情况下隐藏第一个网格视图(包含所有行postData
的任何替代方法也有助于解决方法。
你把这个问题描述得很好。这个问题只能通过jqGrid中更深入的改变来解决。
我开发了免费的jqGrid分支,从主jqGrid存储库的许可协议开始,在4.7.1版本中更改了jqGrid,并且在Guriddo jqGrid JS中重命名了jqGrid(请参阅Guriddo jqGrid JS的价格帖子)。从2014年底免费jqGrid项目的开始,我重写了jqGrid的许多旧部分。重写后,一些功能相对容易实现。
如果您要将当前的jqGrid替换为空闲的jqGrid,那么您可以使用与loadonce: true
结合使用的新选项forceClientSorting: true
。该选项强制应用客户端排序和筛选数据,然后 jqGrid 将显示第一页。您可以加载任何 JSON 数据,例如从某些公共源加载,其中您无法在服务器端更改任何内容,然后在客户端应用所需的过滤和排序。您应该从loadComplete
中删除旧技巧,所有技巧都应该直接工作。
顺便说一下,使用免费jqGrid的最简单方法是从CDN加载它。请参阅维基文章。
- Jqgrid-表未显示响应行为
- jqGrid无法显示数据
- 用于显示服务器端验证结果的 Jqgrid 编辑事件
- jquery jqgrid 不显示结果,具体取决于 JSON 对象中的参数
- 如何在jqgrid中显示json数组值
- jqGrid不显示分页链接
- jqGrid-单击链接时在新窗口中显示PDF
- jqGrid不显示搜索按钮
- 当网格视图设置为 true 时,Jqgrid 在 IE9 中显示“正在加载”
- 在 Jqgrid 编辑表单上显示成功消息
- 单击行时突出显示 Jqgrid,但不选中多选复选框
- 显示表单前的 JQGRID 验证
- 在初始加载时获取带有 postData 过滤器的 jqGrid,以仅显示客户端过滤行
- jqGrid 显示排序后Col/hideCol不起作用
- 在单元格中显示另一个值时,按一个值对jqGrid进行排序
- jqgrid-单击行时如何显示编辑表单
- 如何在jqGrid中隐藏和显示自定义按钮通过使用"reccount”;
- Jqgrid子网格json数据未显示
- jqgrid:显示空搜索中的所有行
- jqgrid显示不在json中的静态列