javascript - jqGrid根据列数动态shrinkToFit

标签 javascript jquery jqgrid

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

如果我有 4 列,每列都设置了宽度,并且选项 shr​​inkToFit 设置为 true,则列将拉伸(stretch)以适合 900 像素。

但是,如果我有第二个包含 14 列的网格,并且我为每个网格设置了宽度,则 jqGrid 将不会考虑该列的宽度,因为 shr​​inkToFit 设置为 true。如果我将其设置为 false,我就可以解决这个问题。但另一个问题又出现了。第一个网格现在每列的宽度为 150px,并且列不再拉伸(stretch)以适合网格。

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

最佳答案

抱歉,但是很难理解您到底想要哪种行为。

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

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

如果您仍然希望使用 shr​​inkToFit: true,但确实使用其他宽度值作为网格所有宽度的总和,您还有一个选择。 您可以使用setGridWidth方法。它有可选的第二个 bool 参数shr​​ink。使用带有一个参数的 setGridWidth 方法将根据网格的 shr​​inkToFit 选项的值进行收缩,但显式使用第二个 shr​​ink 参数允许您在不收缩的情况下更改宽度。也许这就是您想要实现的。

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

关于javascript - jqGrid根据列数动态shrinkToFit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14464350/

相关文章:

jquery - 使用 JQuery 创建链接的最佳方法?

javascript - 如何使用 gulp-traceur 和 gulp-webpack?

javascript - 通过javascript向下拉列表添加元素

javascript - 选中时如何为星码赋予悬停效果?

javascript - 在确认框中显示是和否按钮而不是确定和取消?

javascript - jqGrid 问题分组 - 每次更改排序时都会附加重复的行

javascript - Bluebird promise 链 : 'Catch' with Result

javascript - 流程图和javascript

javascript - 当请求实体的内容类型不是 application/x-www-form-urlencoded 时使用@FormParam]

javascript - 如何使用 jqgrid 仅使单击的单元格可编辑,而不是单击的行中的所有可编辑单元格?