我有一个 jQueryUI 对话框 ( #locDialog
),其中有一个 jqGrid ( $grid
)。当对话框打开时(最初,但每当它打开时都会被调用),我希望$grid
将$locDialog
. 当我最初这样做时,我在网格内(而不是在对话框内)得到滚动条。
如果我调试代码,我看到的宽度$grid
是 677。所以,我setGridWidth()
再次调用并检查宽度,现在我有 659,减少了 18px,这是 jqGrid 滚动区域的大小(Dun-dun -逼债..)
当我重新调整对话框时,我也调整了网格的大小,一切都很愉快 - 没有滚动条,除非必要。
我的对话框初始化代码:
$locDialog = $('#location-dialog').dialog({
autoOpen: false,
modal: true,
position: ['center', 100],
width: 700,
height:500,
resizable: true,
buttons: {
"Show Selected": function() {alert($('#grid').jqGrid('getGridParam','selarrrow'));},
"OK": function() {$(this).dialog('close');},
"Cancel": function() {$(this).dialog('close');}
},
open: function(event, ui) {
$grid.setGridHeight($(this).height()-54);
// No idea why 54 is the magic number here
$grid.setGridWidth($(this).width(), true);
},
close: function(event, ui) {
},
resizeStop: function(event, ui) {
$grid.setGridWidth($locDialog.width(), true);
$grid.setGridHeight($locDialog.height()-54);
}
});
我很好奇是否有人以前见过这个。真的,如果我一开始有不必要的滚动条,这并不是世界末日,但奇怪的是,当我最初调用 setGridWidth 时,它没有考虑 18px 的滚动区域。
至于神奇的数字 54,这是我必须从对话框值的高度中减去的数字,以便在没有不必要的滚动条的情况下渲染网格。
我认为这可能是一个时间问题,尽管这没有多大意义。一旦网格完全加载,也许我应该调用一个事件。这可以确保它正确计算其宽度。