【问题标题】:Unnecessary horizontal scrollbar jqGrid不必要的水平滚动条 jqGrid
【发布时间】:2011-08-04 13:48:24
【问题描述】:

在我的 jqGrid(使用 4.0.0 版)中,我得到了一个不必要的水平滚动条,但是当还有一个垂直滚动条时。此问题仅在 Chrome 和 Firefox 中出现,在 Internet Explorer 中不会出现。

好像表格宽度的计算有问题,因为横向滚动只有一两个像素。我使用autowidth: true 作为宽度的表格属性。大约有八列,一些具有固定宽度(非常小),另一些具有动态宽度。

完全禁用水平滚动不是解决方案,因为用户仍然可以放大某些列,然后需要水平滚动条。但最初我希望它加载与表格宽度对齐的列,并在需要在较小的屏幕上显示表格时使用垂直滚动条。

以下是代码中网格属性的摘录

    $("#grid").jqGrid({
    datatype: 'json',
    mtype: 'POST',
    colNames:loadColumns(columns)[0],
    colModel:loadColumns(columns)[1],
    height: $(window).height() - 160,
    rownumbers: false,
    pager: '#pager',
    rowNum:25,
    rowList:[25,50,100],
    sortname: 'invid',
    sortorder: 'desc',
    viewrecords: true,
    autowidth: true,
    beforeSelectRow: function(){
        return false;
    },
});

【问题讨论】:

    标签: jquery jqgrid


    【解决方案1】:

    您应该确认您的 CSS 中没有表格的某些设置。

    例如在我的建议here 中,我描述了 ASP.NET MVC 项目的标准 CSS(从 1.0 到 3.0 的所有版本)包括以下设置:

    table
    {
        border: solid 1px #e8eef4;
        border-collapse: collapse;
    }
    table td
    {
        padding: 5px;
        border: solid 1px #e8eef4;
    }
    

    在计算最佳网格宽度时不会考虑此设置。如果您删除设置或添加以下附加设置

    div.ui-jqgrid-view table.ui-jqgrid-btable
    {
        border-style:none;
        border-top-style:none;
        border-collapse:separate;
    }
    div.ui-jqgrid-view table.ui-jqgrid-btable td
    {
        border-left-style:none
    }
    div.ui-jqgrid-view table.ui-jqgrid-htable
    {
        border-style:none;
        border-top-style:none;
        border-collapse:separate;
    }
    div.ui-jqgrid-view table.ui-jqgrid-btable th
    {
        border-left-style:none
    }
    

    水平滚动条的问题将得到解决。

    如果您不使用 ASP.NET MVC,您的问题可能有其他原因,但我建议您搜索 CSS 的任何定义 tabletdth

    【讨论】:

    • 感谢您的快速反应。我确实在使用 ASP.NET MVC,但不幸的是,您的解决方案并没有解决我的问题,即使新属性已正确应用(必须使用 !important 某些)。您提供的链接上的其他解决方案也没有解决它。但是问题总是来自 CSS 样式的问题?然后我会进一步研究。
    • @Erwin:我只是想重现你的问题。我使用了来自the answer 的 MVC 示例,添加了 autowidth: true 并且所有工作都没有滚动条。然后我更新到 jqGrid 4.0,一切都和以前一样。所以可能你的测试不正确,或者你有一些额外的 CSS 不是 ASP.NET MVC 的标准。
    【解决方案2】:

    我将此代码添加到 CSS 文件“ui.jqgrid.css”中,水平滚动条不再出现:

    .ui-jqgrid .ui-jqgrid-btable
    {
        table-layout: auto;
    }
    

    【讨论】:

    • 这会移除滚动条,但会错位列名和表数据
    • 我在 ui-jqgrid .ui-jqgrid-htable 中添加了相同的规则,它修复了错位问题。
    【解决方案3】:

    对我来说,加载网格后的解决方案是这样的:

    $("#gridtofix").closest('.ui-jqgrid-bdiv').width($("#gridtofix").closest('.ui-jqgrid-bdiv').width() + 1);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-03
      • 2023-03-25
      • 2016-03-23
      相关资源
      最近更新 更多