jqGrid动态shrinkToFit取决于列号

时间:2013-01-22 17:20:32

标签: javascript jquery jqgrid

我在项目中使用jqGrid,宽度设置为900px,所有网格的配置相同。

如果我有4列,每列都设置了宽度,并且选项shrinkToFit设置为true,则列将拉伸以适合900px。

但是如果我有一个包含14列的第二个网格并且我将宽度设置为每个,则jqGrid将不会尊重列的宽度,因为shrinkToFit设置为true。如果我将其设置为false,我就解决了这个问题。但另一个问题出现了。现在第一个网格的宽度为150px到每列,并且列不再拉伸以适应网格。

问题: 当列宽的总和大于网格宽度而没有改变配置时,有没有办法实现水平滚动条?

1 个答案:

答案 0 :(得分:2)

很抱歉,但很难理解您希望拥有哪种行为。

首先,您必须决定是否知道网格的哪个列的宽度最佳,或者您希望对列进行缩放(拉伸),并且列宽将被解释为权重。如果您想要最后的行为,则应选择默认设置shrinkToFit: true。在这种情况下,width 100,200和300的值意味着与值1,2和3完全相同。

我个人在实践中主要是有很多列的网格。因此,在小型监视器上使用默认设置shrinkToFit: true,同时跟随大量压缩列。因此,人们无法在网格上看到任何有用的信息。所以我更喜欢在案例中使用shrinkToFit: false。我知道哪个是每个列的像素宽度,并在网格创建期间将值设置为width。因此,具有大型监视器的用户可以直接查看所有最重要的信息。此外,我没有为网格指定任何width参数。如果需要,用户使用页面的滚动条。您的要求可能会有所不同,哪些应该选择最适合您的价值。

如果您仍然希望使用shrinkToFit: true,但是使用宽度的其他值作为网格所有宽度的总和,您还有一个选项。 您可以使用setGridWidth方法。它具有可选的第二个布尔参数shrink 。使用带有一个参数的setGridWidth方法将根据网格的shrinkToFit选项的值进行缩减,但显式使用第二个shrink参数可以更改宽度没有收缩。可能你想要实现它。

我在the answer中描述的另一个选项。 jqGrid没有任何允许将网格的某些列的宽度更改为新值的方法。在答案中,我描述了解决方法(请参阅答案的resizeStop回调代码),该代码使用内部dragEnd方法更改coloumn宽度。该演示将用于子网格,但可以用于每个网格的相同方法。