【发布时间】:2018-03-01 17:55:33
【问题描述】:
我有两个 jqGrid,想将过滤器从第一个复制到第二个。过滤器正在应用并对数据进行排序,但 ui 与该过滤器不对应:我的意思是在列标题处显示错误的搜索选项,不正确的搜索顺序箭头。所以,问题是:如何更新 jqGrid 标头的 UI 以获得正确的标头?
代码示例如下:
var firstGridFilters = $("#firstjqGrid").getGridParam('postData').filters;
var secondGridParams = $("#secondjqGrid").jqGrid('getGridParam');
secondGridParams.postData.filters = firstGridFilters;
$("#secondjqGrid").jqGrid('setGridParam', secondGridParams);
我试图像这样更新数据:
$("#secondjqGrid").trigger('reloadGrid');
或
$("#secondjqGrid")[0].triggerToolbar();
数据已排序,但 UI 错误。
【问题讨论】:
-
您使用哪个版本的jqGrid以及来自哪个fork的jqGrid([免费jqGrid](),商业[Guriddo jqGrid JS]()还是版本 排序顺序,并且与应用于 jqGrid 的过滤器无关。此外,要应用过滤器,您需要将
search选项设置为true以及postData.filters。之后$("#secondjqGrid").trigger('reloadGrid');将应用新过滤器。 -
顺便说一句,
$("#secondjqGrid").jqGrid('setGridParam', secondGridParams);行是不需要的,因为$("#secondjqGrid").jqGrid('getGridParam');将引用返回给选项对象。您只需将$("#secondjqGrid").jqGrid('setGridParam', secondGridParams);行替换为secondGridParams.search = true;即可使用$("#secondjqGrid").trigger('reloadGrid');。 -
我使用的是 jqGrid 4.6.0。而我们彼此并不了解。我的网格中的数据被正确过滤和排序。但是 soper(^, ~, ==, etc.) 和排序箭头在网格标题中没有更新。如您所说,通过调用 sortGrid 可以解决排序箭头的问题。但是 soper 的问题仍然存在(在第二个网格中过滤了数据,但显示了不正确的 soper)。有什么方法可以更新标题网格的布局吗?
-
抱歉,但您应该始终包含 jqGrid 的版本,尤其是在您使用一些复古版本(超过 4 岁)时,因为它不受支持很多年。您尝试解决的问题是版本 4.6 中的错误。它在以后的版本中得到了修复。不会创建 jqGrid 4.6 的修复程序。
-
“jqGrid”的开发在 4.7 版停止。有两个基于 jqGrid 4.7 并且具有其他名称的主要分支(跟随):1)free jqGrid,我开发的,可以在 MIT / GPL 许可下完全免费使用(像 jqGrid 4.6); 2)商业Guriddo jqGrid JS,开发托尼托莫夫。我建议您升级到“free jqGrid”或“Guriddo jqGrid JS”的最新版本。