我将列排列信息保存到表格中。此信息可以在beforeRequest事件中重新加载:
mynewperm = {....};
myGrid.jqGrid("remapColumns", mynewperm, true);
列正确重新排序。但是我丢失了标题图标。现在,如果我点击任何列标题,我看不到 排序图标,然后不能排序任何列。我怎样才能找回来?
谢谢,
YH
答案 0 :(得分:2)
如果您能够更改代码,则可以测试未定义的a.grid.headers [a.p.lastsort]。
在源文件中,它可能如下所示:
// old
var previousSelectedTh = ts.grid.headers[ts.p.lastsort].el
// new:
var previousSelectedTh = ts.grid.headers[ts.p.lastsort] ? ts.grid.headers[ts.p.lastsort].el : null
答案 1 :(得分:1)
确实,如果您查看jquery.jqGrid.src.js
来源,则该行为:
var previousSelectedTh = ts.grid.headers[ts.p.lastsort].el, newSelectedTh = ts.grid.headers[idxcol].el;
我的版本中的#1982行。我通过修改文件来修复它,并在该行之前添加了它:
if (ts.p.lastsort < 0) // johnl.
ts.p.lastsort = 0;
问题是ts.p.lastsort
为-1。
答案 2 :(得分:1)
我自己设法解决了这个问题,但没有使用上述方法。我在尝试对jqgrid中的列进行排序时收到以下错误消息:
TypeError: a.grid.headers[a.p.lastsort] is undefined js/jqgrid/jquery.jqGrid.min.js?1.4:86
我应该注意到Firebug产生了这个错误消息。我们公司为Chrome开发网络应用程序,但Chrome的Javascript控制台产生了一个非常简单的错误消息:
Uncaught TypeError: Cannot read property 'el' of undefined
在删除导致问题的页面上除了jqGrid声明之外的所有声明之后,发现删除jqGrid的“multiSelect”选项声明解决了这个问题。显然,声明此选项会导致将额外的隐藏列添加到呈现的网格中,这使用户可以一次选择多个网格行。我不完全确定为什么这引起了一个问题,但在与编程总监协商后,我们最好的猜测是在jqGrid库代码中有一个for循环,当应用列排序时调用并且循环没有考虑这个额外的列,导致它没有被定义。
对一个奇怪问题的奇怪回答,但希望这将有助于将来有人出来并保存它们大约3个小时的调试!
答案 3 :(得分:0)
我有同样的问题:
它附加到我,因为我在“loadComplete”事件中应用“remapColumns”方法(我从cookie中获取用户列配置)。
因此,当我尝试对列进行排序时,没有任何事情发生。我在firebug中遇到了这个错误:
a.grid.headers [a.p.lastsort]未定义 - &gt; jquery.jqGrid.min.js(第93行)
也许找到问题是有帮助的
谢谢