2015-08-17 112 views
0

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

1)VIN &年列包含太多自由空间

2)修剪包含太长以适应列的宽度(如1993年三菱3000GT 2博士VR-4涡轮增压四驱两厢几条记录)

此外,jqGrid有true/false“自动换行”设置的地方?

演示在link removed

回答

0

自动宽度调节发现游离的jqGrid存在开始4.8版本。免费的jqGrid仍然不会自动处理所有列的宽度。我们需要在colModel中添加一些其他属性,以便根据最长内容的宽度设置宽度,并设置一些其他选项。

您当前的代码使用width: 190为列'Vin'并没有指定任何其他列的任何width属性,因此默认值width: 150将被使用。此外,您使用jqGrid的width: 1022选项和错误的选项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网格到列的最大宽度。更长的文本将被包装。

+0

不错!进行这些更改后它看起来很不错。我没有看到宽度:Vin栏中的190,我的不好,但现在修好了。还有两个问题,1)我想为列添加一些左/右填充,比如VIN,这有点太紧张,2)我注意到当我调整Make列然后做列排序时,调整后的宽度得到恢复回到原来的状态 - 它是如何工作的?有些用户不介意,但我不能说一些其他用户可能不需要它。 – fletchsod

+0

@fletchsod:免费jqGrid使用规则'.ui-jqgrid tr.jqgrow> td {padding:0 2px 0 2px; }'在'ui.jqgrid.css'中填充。你可以在'ui.jqgrid.css'后加入另一个CSS规则来增加填充大小:'.ui-jqgrid tr.jqgrow> td {padding:0 4px 0 4px; ''例如。排序会更改网格当前页面的内容,因此'loadComplete'将被触发,'autoresizeOnLoad:true'选项会重新计算列的宽度。如果你想保持初始宽度值,你可以使用'setGridParam'在第一次加载之后修改'autoresizeOnLoad'。 – Oleg

+0

细胞填充左/右看起来不错,我想。至于autoresizeOnLoad的setGridParam,它看起来并不好,但更糟糕。在第一次加载时,Year栏不再狭窄,Trim栏中的文字被删除。它看起来像jqGrid可以完成加载之前autoresizeOnLoad不使用。那么,脚本有什么问题呢,它应该做些什么呢?另外,当我发布它时,stackoverflow不断移除“@Oleg:”。奇怪的。 – fletchsod