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

Jqgrid 尝试动态更改隐藏列的宽度会导致错误“;“对许多递归”;,jqgrid,Jqgrid,不幸的是,关于我的具体问题,我找不到任何帮助。 我试图简化它: 我的网格由一个显示列(a)和一个隐藏列(B)以及其他显示列(C,D)组成。通过一个自定义按钮,我可以在这两列之间切换,以便a隐藏,B显示,反之亦然 我的目标如下: 如果(显示)A的宽度已更改,(隐藏)B的宽度也应更改 我目前实现这一点的方式: resizeStop:function(){ var$self=$(本); shrinkToFit=$self.jqGrid(“getGridParam”、“shrinkToFit”); $s

不幸的是,关于我的具体问题,我找不到任何帮助。 我试图简化它:

我的网格由一个显示列(a)和一个隐藏列(B)以及其他显示列(C,D)组成。通过一个自定义按钮,我可以在这两列之间切换,以便a隐藏,B显示,反之亦然

我的目标如下:

如果(显示)A的宽度已更改,(隐藏)B的宽度也应更改

我目前实现这一点的方式:

resizeStop:function(){
var$self=$(本);
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
的代码,但找不到任何提示,它会在哪里调用自己

有人能帮我吗?
提前谢谢

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

您写道:“使用自定义按钮,我可以在这两列之间切换,以便a隐藏,B显示,反之亦然。”在我看来,您需要在使a列或B列可见后(在自定义按钮的
单击
事件句柄中),直接调用
setColWidth
方法。它应该能解决问题


更新:下面的演示演示了该方法。

如您所说,在放置setColWidth后,它几乎可以正常工作。只有一个很难描述的奇怪的副作用:第一步->将列A调整为宽度x;第二步->单击自定义按钮以显示B并隐藏A,B获得宽度x,但显示的宽度比之前的A大;第三步->再次单击显示A并隐藏B,宽度为x的A现在同样显示给B(也比调整大小的A大)。我希望您能理解这个描述?@gnanr:您需要提供示例,用于重现问题。嗨,Oleg,谢谢您的建议。我在jsFiddle:@gnanr中重现了这种奇怪的行为:这个问题可以通过用法
height:“auto”
来解决。看见我对代码做了更多的修改。例如,在原始演示中,变量shrinkToFit用作resizeStop的全局内部。我添加了
gridview:true,autoencode:true
选项,使
bShuffle
与网格关联,页面上可以使用如此多的网格,更改了
onClickButton
等的代码。一方面,当调整列A的大小,然后在A和B之间切换时,问题仍然存在。这就是问题所在。另一方面,栅格的高度不能自动生成。