Correctement appelant setGridWidth sur un jqGrid à l'intérieur d'un Dialogue jQueryUI
J'ai un jQueryUI dialogue (#locDialog
) qui a un jqGrid ($grid
) à l'intérieur. Lorsque la boîte de Dialogue s'ouvre (à l'origine, mais elle est appelée à chaque fois qu'il ouvre), je veux le $grid
pour redimensionner à la taille de la $locDialog
. Quand je fais cela au départ, je reçois des barres de défilement à l'intérieur de la grille (pas à l'intérieur de la boîte de dialogue).
Si je déboguer le code, je vois la largeur de la $grid
est de 677. Donc, j'appelle setGridWidth()
de nouveau et vérifier la largeur et maintenant, j'ai 659, qui est 18px moins, ce qui est la taille de la zone de défilement pour le jqGrid (Dun-dun-dun,..)
Quand je rezie la boîte de dialogue, j'ai redimensionner la grille, et tout est heureux - pas de barres de défilement, sauf si cela est nécessaire.
Mon boîte de dialogue code d'initialisation:
$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 ça avant. Vraiment, elle n'est pas la fin du monde si j'ai d'abord avoir les barres de défilement inutile au premier abord, mais c'est juste bizarre que quand je l'appelle setGridWidth d'abord, elle ne prend pas en compte la zone de défilement de 18px.
Autant que le nombre magique 54, qui est le nombre que j'avais à soustraire de la hauteur de la boîte de dialogue valeur pour obtenir la grille de rendre inutile sans les barres de défilement.
Je pense que c'est peut être un problème de timing, 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é. Cela peut s'assurer qu'il calcule sa largeur correctement.
OriginalL'auteur Dan | 2010-04-21
Vous devez vous connecter pour publier un commentaire.
Il y a des cas, où jqGrid calculer la largeur d'un peu incorrect. Surtout que j'ai des problèmes avec la grille de largeur, mais dans certains cas, sur IE6 également à la hauteur. Donc, je dois écrire une petite fonction pour résoudre le problème.
Dans ce code
"main"
est l'id de la div parent à l'intérieur de laquelle la grille sera créé. Dans le code que j'ai tester (scrollWidth > mainWidth
) si la largeur de"main"
permettre d'augmenter de jqGrid largeur.Bon endroit pour appeler cette fonction est à l'intérieur de
loadComplete
:et à l'intérieur de
"done"
, si vous utilisez'columnChooser'
si utilisationQuery('#list').jqGrid('columnChooser');
(dans cet exemple, j'utilise aussi
'gridResize'
.)Pouvez-vous regarder quelque chose de semblable, question
Je sais que c'est un vieux de la réponse, mais... j'ai essayé d'utiliser ce code mais il ne fonctionne pas correctement. J'ai utilisé @Oleg est
fixGridWidth
fonction et oui, il change de grille. Mais les colonnes restent avec la même taille, donc il y a la moitié de la grille vide, les colonnes ne pas redimensionner. Savez-vous comment faire pour redimensionner les colonnes de trop?Désolé, j'ai développer des alternatives à la fourche, que j'ai peut être utilisée gratuitement jqGrid entièrement gratuit. Je ne peux pas fournir tout le soutien de Gurrido jqGrid JS. Vous pouvez essayer (au moins temporaire) pour remplacer les Url à jqGrid fichiers vers des Url à partir de CDN (voir wiki) et de vérifier si votre problème est commune pour les deux fourches de jqGrid. Dans le cas que je pourrais essayer de vous aider à résoudre le problème. Un exemple de la démo, qui est jsfiddle.net/OlegKi/andm1299/26
Voir ici quelques exemples de l'utilisation de la libre jqGrid.
OriginalL'auteur Oleg