J'ai une boîte de dialogue jQueryUI (#locDialog
) qui contient un jqGrid ($grid
) à l'intérieur. Lorsque le dialogue s'ouvre (initialement, mais il est appelé à chaque fois qu'il s'ouvre), je veux que le $grid
soit redimensionné à la taille du $locDialog
. Quand je fais cela au début, j'obtiens des barres de défilement dans la grille (pas dans la boîte de dialogue).Appelez correctement setGridWidth sur un jqGrid à l'intérieur d'une boîte de dialogue jQueryUI
Si je déboguer le code, je vois la largeur de la $grid
est 677. Donc, j'appelle setGridWidth()
à nouveau et vérifier la largeur et maintenant j'ai 659, ce qui est 18px moins, ce qui est la taille de la zone de défilement pour le jqGrid (Dun-dun-dun ..)
Quand je trouve la boîte de dialogue, je redimensionne aussi la grille, et tout est content - pas de barre de défilement, sauf si nécessaire.
Mon dialogue Code 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);
}
});
Je suis curieux de savoir si quelqu'un a vu cela auparavant. Vraiment, ce n'est pas la fin du monde si j'ai d'abord des barres de défilement inutiles au début, mais c'est bizarre que lorsque j'appelle initialement setGridWidth, il ne tient pas compte de la zone de défilement de 18px.
En ce qui concerne le nombre magique 54, c'est le nombre que j'ai dû soustraire de la hauteur de la valeur du dialogue pour que la grille soit rendue sans barres de défilement inutiles. Je pense que cela peut être un problème de synchronisation, même si cela n'a pas beaucoup de sens. Peut-être que je devrais appeler un événement une fois que la grille est complètement chargée. Cela peut assurer qu'il calcule correctement sa largeur.
Je vais certainement donner un coup d'oeil, Oleg - merci beaucoup pour le code. Je ne suis pas trop inquiet à ce sujet car le problème ne se produit que lorsque l'utilisateur ouvre une boîte de dialogue. Une fois qu'ils ont redimensionné/rechargé, il se répare. Encore une fois, probablement un problème de synchronisation. Merci encore: D – Dan
@Oleg: Pouvez-vous regarder quelque chose de similaire [question] (http://stackoverflow.com/questions/8292341/horizontal-scroll-bar-in-jqgrid-when-needed) – Ricky
Je sais que c'est un vieille réponse mais ... J'ai essayé d'utiliser ce code mais ça ne fonctionne pas correctement. J'ai utilisé la fonction 'fixGridWidth' de @ Oleg et oui, elle redimensionne de grid. Mais les colonnes restent avec la même taille, donc la moitié de la grille est vide, les colonnes ne sont pas redimensionnées. Savez-vous comment redimensionner les colonnes aussi? – Isthar