7
votes

JQGRID - Y a-t-il un moyen de toujours afficher une barre de défilement verticale?

Mon application comporte plusieurs JQGrids qui peuvent contenir ou non suffisamment de lignes pour nécessiter une barre de défilement verticale. Mais les lignes peuvent être ajoutées de manière dynamique à ces grilles après avoir été créées, de sorte qu'une grille puisse éventuellement nécessiter une barre de défilement.

Le problème est que si la grille n'a pas assez de lignes pour nécessiter une barre de défilement, il y a de l'espace vide sur le côté droit de la grille. Je voudrais résoudre ce problème - soit toujours afficher la barre de défilement verticale, soit l'ajouter de manière dynamique si nécessaire.

J'ai essayé d'ajouter le CSS suivant à la grille .ui-JQGrid-BDIV DIV: xxx

en utilisant la jQuery suivante (le code est laid, je sais): xxx

Cela fonctionne bien sur Firefox et Chrome, mais Sur la grille, la grille ne présente jamais la barre de défilement (peu importe le nombre de lignes I Ajouter, ils sont ajoutés au bas de la grille et une barre de défilement verticale n'apparaît jamais).

Toute aide est appréciée!


0 commentaires

4 Réponses :


1
votes

Avez-vous défini la propriété Hauteur sur la grille? IE peut devenir grincheux avec des barres de défilement si aucune hauteur n'est définie.


0 commentaires

14
votes

Overflow-y code> est CSS3, et il n'est pas encore entièrement supporté par IE (soupir ...)

Donc, je suppose que les seules 2 css que vous pouvez faire à ce sujet, sans aucune Autre balisage impliqué, est d'utiliser Overflow: auto code> (qui permettra au navigateur de décider) ou Overflow: défilement code>, qui forcera les barres de défilement verticaux et horizontales.

Une solution de contournement peut être d'envelopper la grille entière dans une DIV plus importante avec une hauteur min-hauteur, de sorte que vous définissez cela égal à la fenêtre de navigateurs + 1px. De cette façon, vous forcerez une barre de défilement verticale. P>

Réglage d'une hauteur minable peut être difficile à faire dans tous les navigateurs, mais j'ai trouvé que cela fonctionne bien dans la plupart d'entre eux. P>

.the-wrapper{
  height: auto !important; /* for real browsers*/
  height: 601px;           /* IE6 will use this a min-height. Use any height you need - you can even set this using JavaScript depending on the browser window height */
  min-height: 601px;       /* for real browsers - same value as height */
}


2 commentaires

C'est exactement ce que j'allais recommander. J'avais +1 si j'avais laissé des votes.


Salut Bob, merci quand même :) Mais ça ne me dérangerait pas si tu reviens demain: p



0
votes

Avez-vous essayé de JQGRID 3.6 Beta, il a beaucoup de nouvelles fonctionnalités telles que: véritables lignes défilantes Je pense que c'est une solution pour vous.

Démo de nouvelles fonctionnalités: http://www.trirand.com/jqgrid/jqgrid36/jqgrid.htmlled/a >

Alsow Il y a une nouvelle méthode ajoutée: gridrérésize qui peut redimensionner la grille. http://github.com/tonytomov/jqgrid/commit/a008ebf7b8ad684b21e51f21eed4301b82bc66f2


0 commentaires

1
votes

Il existe une option ScrollOffset pour le JQGrid.

Définissez-le à zéro et l'espace vide s'en va.


1 commentaires

Droite, le problème est que la barre de défilement est nécessaire s'il y a plus de lignes que de pouvoir être affichées - mais la grille ne peut en savoir que lorsque les données ont été récupérées. Mais une fois que la grille est construite, l'option ScrollOffset ne peut pas être modifiée, selon: trirand.com/jqgridwiki/doku.php?id=wiki:Options