【发布时间】:2011-06-26 11:29:10
【问题描述】:
我有一个有很多列的jqGrid,当列宽的总和大于固定宽度的容器时,它会显示如下:
如果网格的宽度太大,则不要使用水平滚动条。
如何获得 jQgrid 的水平滚动条,这样网格的最大尺寸是固定的,如果我添加更多列,它只会滚动?
另外,假设这是可能的,你能冻结前几列吗?
【问题讨论】:
标签: jquery jqgrid horizontal-scrolling
我有一个有很多列的jqGrid,当列宽的总和大于固定宽度的容器时,它会显示如下:
如果网格的宽度太大,则不要使用水平滚动条。
如何获得 jQgrid 的水平滚动条,这样网格的最大尺寸是固定的,如果我添加更多列,它只会滚动?
另外,假设这是可能的,你能冻结前几列吗?
【问题讨论】:
标签: jquery jqgrid horizontal-scrolling
您可能使用forceFit:true jqGrid 选项。首先你应该设置forceFit:false 或者使用shrinkToFit:false。之后,您可以使用 jqGrid 的width 选项或使用setGridWidth 方法设置网格宽度。您将拥有列标题对应于列的width 属性的网格,并且网格将具有水平滚动条。
更新:尝试设置shrinkToFit:false 和width:600(例如)并查看结果。
只设置shrinkToFit:false后可以看到网格会有水平滚动条。即使网格小到可以在不滚动的情况下显示,您也会看到它。这是我发布的一个错误 here 以及相应的错误修复。该修复程序包含在GitHub 上的代码中,但不包含在 jqGrid 3.8.2 中。下一个 jqGrid 版本将进行修复。尽管如此,出于您的目的,错误的宽度并不重要,因为您将/可以明确设置网格的width。
【讨论】:
您可以通过使用 div 包装网格和寻呼机并运行一个小脚本来获得具有静态或自动大小字段的水平滚动条,
你可以看到jsfiddle-example,或者就这样:
<div id="grid_container">
<table id="list"></table>
<div id="pager"></div>
</div>
并运行此脚本:
$('#grid_container div:not(.ui-jqgrid-titlebar)').width("100%");
我的示例使用的是 trirand.com 的脚本,但我在他们的最新版本上进行了尝试,效果很好。
希望我有所帮助。
【讨论】:
尝试使用fluid jqGrid plugin。也许它可以帮助您解决 jqGrid 宽度的问题。
至于第二个问题,为了冻结前 n 列,我成功地使用了这个super plugin 来冻结第一列。你只向你的 colmodel 添加一个属性,它就可以工作。
祝你好运!
【讨论】: