2009-10-15 54 views
7

我的应用程序有几个jqGrids可能包含或不包含足够的行需要垂直滚动条。但是,行可能会在创建后动态添加到这些网格中,以便网格最终可能需要滚动条。jqGrid - 有没有办法总是显示一个垂直滚动条?

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

我尝试添加以下CSS到网格的的.ui-的jqGrid-BDIV格:

overflow-y: scroll; 

使用下面的jQuery(代码是丑陋的,我知道):

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

这在Firefox和Chrome上运行良好,但在IE上,网格从不显示滚动条(不管我添加多少行,它们被添加到网格的底部,垂直滚动条从不出现)。

任何帮助表示赞赏!

回答

14

overflow-y是CSS3,并且它尚未完全支持IE(叹气......)

所以,我想只有2件CSS事情你可以做这个,而无需任何其他标记,是使用要么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 */ 
} 

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

+0

这正是我要推荐的。如果我有剩下的选票,我会+1。 – 2009-10-25 18:24:46

+1

嗨,鲍勃,谢谢:)但是我不会介意你明天是否会回来:P – Seb 2009-10-26 04:16:12

1

您是否在网格上设置了高度属性?如果没有设置高度,IE可能会滚动滚动条。

+0

谢谢,但我仍然无法让滚动条在IE上工作... – 2009-10-17 18:42:03

1

jqGrid有一个scrollOffset选项。

将其设置为零并且空白空间消失。

+0

对,麻烦的是如果有更多的行可以显示滚动条 - 但网格不知道直到数据已被检索后。但是一旦网格被构建,'scrollOffset'选项不能被改变,根据:http://www.trirand.com/jqgridwiki/doku.php?id=wiki:options – 2011-10-31 16:37:01

+0

这不再有效。不低调,只是分享。 – catbadger 2017-11-07 23:17:31