【问题标题】:jqGrid incorrect width in hidden divsjqGrid隐藏div中的宽度不正确
【发布时间】:2012-12-16 15:48:14
【问题描述】:

我使用的是 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 中呈现所有表格时,所有宽度都正确计算。

【问题讨论】:

  • 如果元素被隐藏,那么 .width() 将返回零。
  • 你建议什么解决方案?我需要在标签中一次渲染 X 表
  • 我暂时意识到了肮脏的javascript解决方案,因为我使用了引导程序,它将有助于其他引导程序 jqgrid 用户 setTimeout(function(){ $('.tab-content .active').not(':first ').removeClass('active'); },200)
  • 您是否为每列设置了宽度?我有隐藏的网格,只有在以正确宽度显示的“主”网格中选择行后才显示和加载数据?
  • 我只使用了 autowidth:true。当我尝试在显示中呈现表格时发生问题:无块

标签: javascript jquery jqgrid


【解决方案1】:

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

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

如果你使用百分比来表示 div 元素的宽度(或者说流体布局),你可以像这样使用 javascript 的offsetWidth 方法来获取包装 div 的宽度。

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

【讨论】:

  • 非常感谢!
【解决方案2】:

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

而不是:

    autowidth       : true,

使用:

    width           :  1030,

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-08
    • 2013-01-04
    • 1970-01-01
    • 2011-06-16
    • 2020-08-16
    • 1970-01-01
    • 1970-01-01
    • 2019-03-03
    相关资源
    最近更新 更多