在不同事件中使用remapColumns时,单击标题时不显示排序图标

时间:2012-04-18 19:44:56

标签: jqgrid

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

mynewperm = {....};

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

列正确重新排序。但是我丢失了标题图标。现在,如果我点击任何列标题,我看不到 排序图标,然后不能排序任何列。我怎样才能找回来?

谢谢,

YH

4 个答案:

答案 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行)

也许找到问题是有帮助的

谢谢