jqGrid - 有没有办法始终显示垂直滚动条?

时间:2009-10-15 21:02:49

标签: jquery jqgrid scrollbar

我的应用程序有几个jqGrids,可能包含或不包含足够的行,需要垂直滚动条。但是,可以在创建行后动态地将行添加到这些网格中,这样网格最终可能需要滚动条。

问题是如果网格没有足够的行来要求滚动条,则网格右侧会有空白区域。我想以某种方式解决这个问题 - 要么总是显示垂直滚动条,要么在必要时以某种方式动态添加它。

我尝试将以下CSS添加到网格的.ui-jqgrid-bdiv div:

overflow-y: scroll;

使用以下jQuery(代码很难看,我知道):

$("#mygrid").closest(".ui-jqgrid-bdiv").attr("style",
$("#mygrid").closest(".ui-jqgrid-bdiv").attr("style") + " overflow-y: scroll; ");

这在Firefox和Chrome上工作正常,但在IE上,网格从不显示滚动条(无论我添加多少行,它们都会添加到网格底部,而且不会出现垂直滚动条)。

感谢任何帮助!

4 个答案:

答案 0 :(得分:14)

overflow-y是CSS3,IE尚未完全支持(叹息......)

所以,我猜你可以做的唯一2件事情,没有任何其他标记,是使用overflow: auto(将让浏览器决定)或overflow: scroll,这将是强制垂直和水平滚动条。

解决方法可能是将整个网格包装在具有最小高度的较大div中,因此您将其设置为等于浏览器窗口+ 1px。这样你就可以强制使用垂直滚动条了。

在所有浏览器中设置最小高度可能很棘手,但我发现这在大多数浏览器中都很有效。

.the-wrapper{
  height: auto !important; /* for real browsers*/
  height: 601px;           /* IE6 will use this a min-height. Use any height you need - you can even set this using JavaScript depending on the browser window height */
  min-height: 601px;       /* for real browsers - same value as height */
}

当然,这会在网格下方添加一些空间。欢迎登机!

答案 1 :(得分:1)

您是否在网格上设置了height属性?如果没有设置高度,IE可能会对滚动条感到脾气暴躁。

答案 2 :(得分:1)

jqGrid有一个scrollOffset选项。

将其设置为零,空白区域消失。

答案 3 :(得分:0)

您是否尝试过jQgrid 3.6 beta,它有很多新功能,例如:真正的滚动行 我想,这是你的解决方案。

新功能演示: http://www.trirand.com/jqgrid/jqgrid36/jqgrid.html

Alsow还添加了新方法: gridResize ,可以调整网格大小。 http://github.com/tonytomov/jqGrid/commit/a008ebf7b8ad684b21e51f21eed4301b82bc66f2