尝试动态更改隐藏列的宽度会导致错误“太多递归”

时间:2014-10-14 14:56:56

标签: jqgrid

不幸的是,我无法找到有关我的具体问题的任何帮助。 我试着简化它:

我的网格包括显示的列(A)和隐藏的列(B)以及其他显示的列(C,D)。使用自定义按钮,我可以在这两列之间切换,以便隐藏A并显示B,反之亦然。

我的目标如下:

如果(显示)A的宽度已经改变,(隐藏)B的宽度也应该改变。

我目前认识到这一点:

resizeStop: function () {
    var  $self = $(this);
    shrinkToFit = $self.jqGrid("getGridParam", "shrinkToFit");
    $self.jqGrid("setGridWidth", this.grid.newWidth, shrinkToFit);

    var a = $self.jqGrid("getGridParam","colModel");
    $self.jqGrid("setColWidth", "customers.name_short",a[2].width);

},

我工作,但我必须等待一个诡计,除此之外,我得到以下日志:“过多的递归”。函数setColWidth似乎被调用超过300次。

我分析了setColWidth的代码,但我找不到任何可以称之为自己的提示。

任何人都可以帮助我吗? 提前谢谢!

1 个答案:

答案 0 :(得分:0)

我想您使用herethe answer中的方法setColWidth。在resizeStop回调中使用它是错误的。

您写道:“使用自定义按钮,我可以在这两列之间切换,这样A就会被隐藏而B会被显示,反之亦然。”在我看来,您需要拨打一个电话在使列A或列B可见(在自定义按钮的setColWidth事件句柄中)之后,直接使用click方法。它应该解决问题。

更新:以下演示http://jsfiddle.net/OlegKi/m7f9ghwq/18/演示了该方法。