Ho una finestra di dialogo jQueryUI (#locDialog
) che contiene un jqGrid ($grid
) al suo interno. Quando si apre la finestra di dialogo (inizialmente, ma viene chiamato ogni volta che si apre), desidero che lo $grid
ridimensioni alle dimensioni dello $locDialog
. Quando lo faccio inizialmente, ottengo barre di scorrimento all'interno della griglia (non all'interno della finestra di dialogo).Chiamare correttamente setGridWidth su un jqGrid all'interno di una finestra di dialogo jQueryUI
Se il debug del codice, vedo la larghezza della $grid
è 677. Così, ho chiamare setGridWidth()
nuovo e controllare la larghezza e ora ho 659, che è 18px meno, che è la dimensione dell'area di scorrimento per jqGrid (Dun-dun-dun ..)
Quando rezie la finestra di dialogo, ridimensiono anche la griglia, e tutto è felice: nessuna barra di scorrimento, tranne dove necessario.
Il mio codice di inizializzazione di dialogo:
$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);
}
});
Sono curioso di sapere se qualcuno ha visto questo prima. In realtà, non è la fine del mondo se inizialmente ho delle barre di scorrimento non necessarie, ma è solo strano che quando chiamo setGridWidth inizialmente, non tenga conto dell'area di scorrimento di 18px.
Per quanto riguarda il numero magico 54, è il numero che ho dovuto sottrarre dall'altezza del valore della finestra di dialogo per ottenere il rendering della griglia senza barre di scorrimento non necessarie.
Penso che potrebbe essere un problema di temporizzazione, anche se questo non ha molto senso. Forse dovrei chiamare un evento una volta che la griglia è stata caricata completamente. Questo può garantire che calcoli correttamente la sua larghezza.
Darò sicuramente un'occhiata, Oleg - molte grazie per il codice. Non sono troppo preoccupato a questo punto perché il problema si verifica solo quando l'utente apre una finestra di dialogo. Una volta ridimensionato/ricaricato, si risolve da solo. Ancora una volta, probabilmente un problema di temporizzazione. Grazie ancora: D – Dan
@Oleg: puoi guardare qualcosa di simile [domanda] (http://stackoverflow.com/questions/8292341/horizontal-scroll-bar-in-jqgrid-when-needed) – Ricky
So che questo è un vecchia risposta ma ... Ho provato a usare questo codice ma non funziona correttamente. Ho usato la funzione 'fixGridWidth' di @ Oleg e sì, ridimensiona la griglia. Ma le colonne rimangono con le stesse dimensioni, quindi c'è metà della griglia vuota, le colonne non vengono ridimensionate. Sai come ridimensionare anche le colonne? – Isthar