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