Mam okno dialogowe jQueryUI (#locDialog
), w którym znajduje się jqGrid ($grid
). Kiedy otworzy się okno dialogowe (początkowo, ale zostanie wywołane za każdym razem, gdy zostanie otwarte), chcę zmienić rozmiar $grid
na rozmiar $locDialog
. Kiedy robię to początkowo, dostaję paski przewijania wewnątrz siatki (nie wewnątrz okna dialogowego).Prawidłowe wywoływanie metody setGridWidth w jqGrid wewnątrz okna dialogowego jQueryUI
Gdybym debugowania kodu, widzę szerokość $grid
jest 677. Więc wzywam setGridWidth()
ponownie i sprawdzić szerokość i teraz mam 659, który jest 18px mniej, co jest wielkość obszaru przewijania dla jqGrid (Dun-dun-dun ..)
Kiedy ponownie wybieram okno dialogowe, zmieniam również rozmiar siatki i wszystko jest w porządku - bez pasków przewijania, chyba że jest to konieczne.
Moja dialogowe Init:
$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);
}
});
Jestem ciekawy, czy ktoś widział tego wcześniej. Naprawdę, to nie koniec świata, gdy początkowo mam niepotrzebne paski przewijania, ale to dziwne, że kiedy początkowo wywołuję setGridWidth, nie uwzględnia to obszaru przewijania o wartości 18 pikseli.
Jeśli chodzi o magicznej liczby 54, czyli liczba musiałem odjąć od wysokości wartości dialogowym, aby uzyskać siatkę do renderowania bez zbędnych pasków przewijania.
myślę, że może to być problem z synchronizacją, choć nie ma to wiele sensu. Być może powinienem wywołać zdarzenie, gdy siatka zostanie całkowicie załadowana. Może to zapewnić prawidłowe obliczenie szerokości.
Zdecydowanie nadaję temu wygląd, Oleg - wielkie dzięki za kod. W tym momencie nie martwię się zbytnio, ponieważ problem pojawia się tylko wtedy, gdy użytkownik otworzy okno dialogowe. Po zmianie rozmiaru/ponownym załadowaniu, naprawia się. Ponownie, prawdopodobnie problem z czasem. Jeszcze raz dziękuję: D – Dan
@Oleg: Czy możesz spojrzeć na coś podobnego [pytanie] (http://stackoverflow.com/questions/8292341/horizontal-scroll-bar-in-jqgrid-when-ededed) – Ricky
Wiem, że to jest stara odpowiedź, ale ... Próbowałem użyć tego kodu, ale nie działa poprawnie. Użyłem funkcji @ fix_bridwidth @ i Olega, zmienia rozmiar siatki. Ale kolumny pozostają w tym samym rozmiarze, więc jest połowa siatki pusta, kolumny nie zmieniają rozmiaru. Czy wiesz, jak zmienić rozmiar kolumn? – Isthar