0

我将列排列信息保存到表中。此信息可以在 beforeRequest 事件中重新加载:

mynewperm = {....};

myGrid.jqGrid("remapColumns", mynewperm, true);

列已正确重新排序。但是我丢失了标题图标。现在,如果我单击任何列标题,我再也看不到排序图标,然后无法对任何列进行排序。我怎样才能找回它?

谢谢,

是的

4

4 回答 4

2

如果您能够更改代码,则可以测试未定义的 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
于 2012-10-24T10:13:23.373 回答
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。

于 2013-02-01T22:30:45.230 回答
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 小时的调试时间!

于 2013-10-24T09:06:03.840 回答
0

我有同样的问题:

它附加到我身上,因为我在“loadComplete”事件中应用了“remapColumns”方法(我从 cookie 中取回用户列配置)。

因此,当我尝试对列进行排序时,什么也没有发生。我在萤火虫中遇到了这个错误:

a.grid.headers[aplastsort] 未定义 -> jquery.jqGrid.min.js(第 93 行)

也许找出问题所在会有所帮助

谢谢

于 2012-04-26T14:38:40.347 回答