У меня есть диалоговое окно jQueryUI (#locDialog
), в котором есть jqGrid ($grid
). Когда диалог открывается (изначально, но он вызывается всякий раз, когда открывается), я хочу, чтобы размер $grid
изменился до размера $locDialog
. Когда я делаю это изначально, я получаю полосы прокрутки внутри сетки (не внутри диалога).
Если я отлаживаю код, я вижу, что ширина $grid
равна 677. Итак, я снова вызываю setGridWidth()
и проверяю ширину, и теперь у меня 659, что на 18 пикселей меньше, что является размером область прокрутки для jqGrid (Dun-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, то это число, которое мне пришлось вычесть из высоты диалогового значения, чтобы сетка отображалась без ненужных полос прокрутки.
Я думаю, что это может быть проблема времени, хотя это не имеет большого смысла. Возможно, мне следует вызвать событие, когда сетка полностью загружена. Это может гарантировать, что он вычисляет свою ширину правильно.