【问题标题】:jqGrid dynamic shrinkToFit depending on column numberjqGrid动态shrinkToFit取决于列号
【发布时间】:2013-01-22 17:20:31
【问题描述】:

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

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

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

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

【问题讨论】:

  • 对不起,但我不明白您需要哪种列宽和网格宽度计算行为。您是否要指定以像素为单位的列宽,或者您只想设置列宽的比例并指定网格的总宽度?您想要固定宽度的网格(例如 900 像素)还是希望网格的宽度是像素中指定的列的宽度之和?
  • Oleg,我喜欢固定网格宽度(900px)。如果列的宽度总和 > 900px,则 shrinkToFit:false。否则,shrinkToFit:true。我已经制定了解决方法来实现这一点。我想知道jqGrid中是否有这样的选项。
  • 如果列宽的总和
  • 对不起,我还是不明白你的问题。如果创建网格,则指定 colModel 作为参数。您可以遍历 colModel before 创建网格的项目并计算列宽的总和。取决于总和的值,您可以指定shrinkToFit 的值。我想你确实有另一个问题,只是描述你的问题不太正确。
  • 你在colModel中指定为width的值是多少:从100到%的比例的像素值?

标签: javascript jquery jqgrid


【解决方案1】:

抱歉,很难理解您究竟想要哪种行为。

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

我个人在实践中主要使用具有许多列的网格。因此,在小型显示器上使用默认设置shrinkToFit: true,并伴随着大量的列挤压。因此,人们将无法真正在网格上看到任何有用的信息。所以我更喜欢在这种情况下使用shrinkToFit: false。我知道每列的像素宽度,并在网格创建期间将值设置为width。因此,拥有大显示器的用户可以直接看到所有最重要的信息。此外,我没有为网格指定任何width 参数。如果需要,用户使用页面的滚动条。您的要求可能不同,应该选择最适合您的值。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-19
    • 1970-01-01
    • 2013-04-17
    • 2012-09-29
    • 1970-01-01
    • 2011-03-25
    • 2011-01-17
    • 1970-01-01
    相关资源
    最近更新 更多