jqGrid隐藏div中的宽度不正确

时间:2013-01-02 09:05:47

标签: javascript jquery jqgrid

我正在使用jqGrid版本4.4.1。我需要在页面上创建x个网格。第一个网格以可见块输出,但其他网格以下列格式输出

<div style='display:none'>
//My jqGrid output
</div>

在可见div中输出的第一个表具有正确的宽度:

<div class="ui-jqgrid ui-widget ui-widget-content ui-corner-all" id="gbox_table0" dir="ltr" style="width: 920px;">

但所有其他表的宽度都不正确:例如。 100像素;

<div class="ui-jqgrid ui-widget ui-widget-content ui-corner-all" id="gbox_table1" dir="ltr" style="width: 100px;">

当我尝试渲染可见div中的所有表时,所有宽度都能正确计算。

2 个答案:

答案 0 :(得分:1)

是的,你是对的......当disply:none时,网格宽度无法正确计算。要解决此问题,您必须确定负责显示网格的事件,并且在此事件中,在显示网格后,您应使用setGridWidth函数正确设置网格的宽度。

由于您没有使用单独的列宽,我建议您将网格包装在div中(假设它的id为container_grid),并且在显示网格时,将其宽度设置为包装div的宽度。

如果你使用百分比作为div元素的宽度(或说流体布局),你可以使用offsetWidth这样的javascript方法获得包装div的宽度。

if($('#container_grid').attr("id")!==undefined)        
            grid.setGridWidth($("#container_grid")[0].offsetWidth);

答案 1 :(得分:0)

简单的解决方案是在初始化网格时使用固定宽度:

而不是:

    autowidth       : true,

使用:

    width           :  1030,

这样即使您将网格显示设置为无,它也会保持所需的宽度。