【问题标题】:Columns width issues? (Too short or too wide)列宽问题? (太短或太宽)
【发布时间】:2015-08-17 14:10:19
【问题描述】:

关于free-jqgrid 4.9.2,它会自动处理列宽吗?不,那么处理这个问题的正确方法是什么?

1) VIN 和年份列包含太多可用空间

2) Trim 包含一些太长而无法容纳列宽的记录(例如 1993 Mitsubishi 3000GT 2 Dr VR-4 Turbo AWD Hatchback)

另外,jqGrid 是否在某处设置了真/假“自动换行”?

演示位于link removed

【问题讨论】:

    标签: jqgrid free-jqgrid


    【解决方案1】:

    从 4.8 版本开始的免费 jqGrid 中存在自动宽度调整。 Free jqGrid 仍然不能自动处理所有列的宽度。需要在colModel 中为应根据最长内容的宽度设置宽度的列添加一些附加属性,并设置一些附加选项。

    您当前的代码将width: 190 用于列'Vin',并且没有为任何其他列指定任何width 属性,因此将使用默认值width: 150。此外,您使用 jqGrid 的 width: 1022 选项和 wrong 选项 autoWidth: true(而不是 autowidth: true)将被忽略。这意味着网格上的div(bDiv或body div)的宽度将设置为1022px,用户可以使用水平滚动条查看所有列。

    我建议您阅读the wiki article。您可以将autoResizable: true 属性添加到某些特定列或使用cmTemplate: { autoResizable: true } 将属性添加到所有 列中。结果,网格中每个单元格的内容将被包裹在<span class="ui-jqgrid-cell-wrapper">...</span> 中。它允许免费的 jqGrid 获取列中所有单元格的内容的确切宽度,然后根据这些值计算最大值。因此,用户可以双击列调整大小(列之间)以将宽度设置为最佳值。在宽度计算 jqGrid 时,除了列的网格单元格的宽度之外,列标题的宽度还包括排序图标的宽度。可以使用autoResizing: { compact: true } 选项来减小没有可见排序图标的列的宽度。最后一个常用选项是autoresizeOnLoad: true,我建议您使用它。它将具有autoResizable: true 属性的列的宽度设置为最佳值。

    所以我建议您在网格中添加以下选项:

    cmTemplate: { autoResizable: true },
    autoResizing: { compact: true },
    autoresizeOnLoad: true
    

    之后列的宽度看起来会好很多。

    如果您希望在某些列的文本太长时换行,那么您可以使用the old answer 中描述的 CSS 设置并设置列的autoResizingmaxColWidth 属性(在colModel 中)或全局将网格的autoResizing 选项的maxColWidth 设置为列的最大宽度。更长的文本将被换行。

    【讨论】:

    • 很好!!!进行这些更改后,它看起来很不错。我没有在 Vin 列中看到宽度:190,我的错,但现在已修复。还有两个问题,1)我想在列中添加一些左/右填充,比如 VIN 有点太紧了 2)我注意到当我调整 Make 列的大小然后进行列排序时,调整后的宽度得到了恢复回到原来的样子——它应该是这样工作的吗?有些用户不介意,但我不能对其他可能不想要的用户说同样的话。
    • @fletchsod: free jqGrid 在ui.jqgrid.css 中使用规则.ui-jqgrid tr.jqgrow > td { padding: 0 2px 0 2px; } 进行填充。您可以在 ui.jqgrid.css 之后包含另一个 CSS 规则,这会增加填充大小:例如 .ui-jqgrid tr.jqgrow > td { padding: 0 4px 0 4px; }。排序会改变网格当前页面的内容,所以loadComplete 会被触发,autoresizeOnLoad: true 选项会重新计算列的宽度。如果你想保持初始宽度值,你可以使用setGridParam在第一次加载后更改autoresizeOnLoad
    • 单元格填充左/右看起来不错,我认为。至于 autoresizeOnLoad 的 setGridParam,它看起来不是更好,而是更糟。 Year 列在第一次加载时不再狭窄,并且 Trim 列上的措辞被砍掉了。看起来在 jqGrid 完成加载之前没有使用 autoresizeOnLoad。那么,脚本有什么问题以及它应该做什么呢?另外,当我发布它时,stackoverflow 不断删除“@Oleg:”。很奇怪。
    • @fletchsod:你用过$(this).setGridParam({ autoresizeOnLoad: false })之前第一次会用到。释放 jqGrid 首先触发 jqGridLoadComplete 事件并调用 loadComplete 回调,然后只有在 autoresizeOnLoad 为真时才调用 autoResizeAllColumns 方法。您可以使用jqGridAfterLoadComplete 事件而不是loadComplete 回调来解决问题,或者您可以手动调用autoResizeAllColumns 方法一次,独立于autoresizeOnLoad 选项的设置。
    猜你喜欢
    • 2021-04-10
    • 1970-01-01
    • 2017-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-18
    • 2012-09-23
    • 2016-04-27
    相关资源
    最近更新 更多