#locDialog
内部にjqGrid ( )がある jQueryUI ダイアログ ( ) があり$grid
ます。ダイアログが開くと(最初は、開くたびに呼び出されます)、$grid
のサイズに合わせてサイズを変更したいと思い$locDialog
ます。最初にこれを行うと、(ダイアログ内ではなく) グリッド内にスクロールバーが表示されます。
コードをデバッグすると、幅が 677 であることがわかります。そのため、もう一度$grid
呼び出しsetGridWidth()
て幅を確認すると、18 ピクセル少ない 659 になりました。これは、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 までは、不要なスクロールバーなしでグリッドをレンダリングするために、ダイアログ値の高さから差し引かなければならなかった数字です。
これはあまり意味がありませんが、タイミングの問題かもしれないと思います。おそらく、グリッドが完全にロードされたら、イベントを呼び出す必要があります。これにより、幅が正しく計算されるようになります。