Ich habe einen jQueryUI-Dialog (#locDialog
), der ein jqGrid ($grid
) enthält. Wenn der Dialog geöffnet wird (anfangs, aber er wird immer aufgerufen, wenn er geöffnet wird), möchte ich die Größe $grid
auf die Größe von $locDialog
ändern. Wenn ich dies zu Beginn mache, bekomme ich Bildlaufleisten innerhalb des Gitters (nicht innerhalb des Dialogs).Richtig Aufrufen von SetGridWidth auf einem jqGrid in einem jQueryUI-Dialog
Wenn ich den Code debuggen, sehe ich die Breite des $grid
677. So ist, nenne ich setGridWidth()
wieder und die Breite überprüfen, und ich habe jetzt 659, die weniger 18px ist, die die Größe des Scrollbereich ist für das jqGrid (Dun-dun-dun ..)
Wenn ich den Dialog rezie, skaliere ich auch das Raster, und alles ist glücklich - keine Scrollbalken, außer wo nötig.
Mein Dialoginitialisierungsauftrag Code:
$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);
}
});
Ich bin gespannt, ob jemand dieses vorher gesehen hat. Wirklich, es ist nicht das Ende der Welt, wenn ich anfangs zunächst unnötige Scrollbalken habe, aber es ist nur komisch, dass ich beim ersten Aufruf von setGridWidth den Scrollbereich von 18px nicht berücksichtige.
Soweit die magische Zahl 54, das ist die Zahl, die ich von der Höhe des Dialogfeldwerts subtrahieren musste, um das Raster ohne unnötige Bildlaufleisten zu rendern.
Ich denke, es kann ein Timing-Problem sein, obwohl dies nicht viel Sinn macht. Vielleicht sollte ich ein Ereignis aufrufen, sobald das Raster vollständig geladen ist. Dies kann sicherstellen, dass es seine Breite korrekt berechnet.
Ich werde auf jeden Fall einen Blick darauf werfen, Oleg - vielen Dank für den Code. Ich mache mir darüber keine Sorgen, da das Problem nur auftritt, wenn der Benutzer einen Dialog öffnet. Sobald sie die Größe ändern/neu laden, repariert sie sich selbst. Auch hier ist wahrscheinlich ein Timing-Problem. Nochmals vielen Dank: D – Dan
@Oleg: Kannst du etwas ähnliches [Frage] (http://stackoverflow.com/questions/8292341/horizontal-croll-bar-in-jqgrid-when-needed) – Ricky
Ich weiß, das ist ein alte Antwort, aber ... Ich habe versucht, diesen Code zu verwenden, aber es funktioniert nicht richtig. Ich habe @ Olegs 'fixGridWidth'-Funktion benutzt und ja, sie skaliert das Gitter. Die Spalten bleiben jedoch gleich groß, sodass die Hälfte des Rasters leer ist. Die Größe der Spalten wird nicht geändert. Können Sie auch die Größe von Spalten ändern? – Isthar