我将列排列信息保存到表中。此信息可以在 beforeRequest 事件中重新加载:
mynewperm = {....};
myGrid.jqGrid("remapColumns", mynewperm, true);
列已正确重新排序。但是我丢失了标题图标。现在,如果我单击任何列标题,我再也看不到排序图标,然后无法对任何列进行排序。我怎样才能找回它?
谢谢,
是的
我将列排列信息保存到表中。此信息可以在 beforeRequest 事件中重新加载:
mynewperm = {....};
myGrid.jqGrid("remapColumns", mynewperm, true);
列已正确重新排序。但是我丢失了标题图标。现在,如果我单击任何列标题,我再也看不到排序图标,然后无法对任何列进行排序。我怎样才能找回它?
谢谢,
是的
如果您能够更改代码,则可以测试未定义的 a.grid.headers [aplastsort]。
在源文件中,它可能如下所示:
// 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
实际上,如果您查看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。
我自己设法解决了这个问题,但没有使用上述方法。尝试对 jqgrid 中的列进行排序时收到以下错误消息:
TypeError: a.grid.headers[a.p.lastsort] is undefined js/jqgrid/jquery.jqGrid.min.js?1.4:86
我应该注意到是 Firebug 产生了这个错误信息。我们公司为 Chrome 开发 Web 应用程序,但 Chrome 的 Javascript 控制台产生了一个非常无信息的错误消息:
Uncaught TypeError: Cannot read property 'el' of undefined
在删除导致问题的页面上除 jqGrid 声明之外的所有声明后,发现删除 jqGrid 的“multiSelect”选项声明解决了该问题。显然,声明此选项会导致将额外的隐藏列添加到呈现的网格中,使用户能够一次选择多个网格行。我不确定为什么这会导致问题,但在咨询了这里的编程主管之后,我们最好的猜测是 jqGrid 库代码中的某处有一个 for 循环,当应用列排序并且循环没有考虑时调用考虑这个额外的列,导致它没有被定义。
对一个奇怪问题的奇怪答案,但希望这能帮助将来的人,并为他们节省大约 3 小时的调试时间!
我有同样的问题:
它附加到我身上,因为我在“loadComplete”事件中应用了“remapColumns”方法(我从 cookie 中取回用户列配置)。
因此,当我尝试对列进行排序时,什么也没有发生。我在萤火虫中遇到了这个错误:
a.grid.headers[aplastsort] 未定义 -> jquery.jqGrid.min.js(第 93 行)
也许找出问题所在会有所帮助
谢谢