47 votes

Comment afficher toutes les lignes dans jqGrid?

jqGrid expose une propriété rowNum où vous pouvez définir le nombre de lignes à afficher pour chaque page. Comment définissez-vous la grille pour afficher TOUTES les lignes?

Pour le moment, je mets juste les rowNum sur quelque chose de très haut comme <%= int.MaxValue %> mais je me demande s'il existe une meilleure solution.

53voto

Justin Ethier Points 57486

Dans la dernière version de jqGrid, vous pouvez définir rowNum à -1 pour charger la grille de toujours afficher toutes les lignes:

rowNum: -1

Voir les dernières jqGrid la documentation ici.

Plus précisément:

Définit le nombre de dossiers que nous avons souhaitez afficher dans la grille. Ce paramètre est passé à l'url pour l'utilisation par le serveur de routine de la récupération des données. Notez que si vous définissez ce paramètre à 10 (c'est à dire récupérer les 10 dossiers) et votre serveur de retour 15 ans, puis seulement 10 enregistrements seront chargés. Définissez ce paramètre à -1 (illimité) pour désactiver cette vérification.


Mise à jour

Malheureusement, ce comportement a été cassée dans la jqGrid 3.6.3. Selon ce post de Tony:

Oui, c'est vrai. La raison en est le nouveau introduit de défilement:1. Dans l'avenir, nous allons corriger ce problème.

Ainsi, le jqGrid les développeurs sont conscients de ce problème et sont apparemment à la planification pour le fixer dans une version future. Malheureusement, ce poste a été de plus d'un an...

À ce moment, tout ce que je peux recommander, c'est que vous définissez rowNum pour un très grand nombre de simuler le comportement d' -1.


Vous pouvez également essayer whatispunk la solution ci-dessous à l'aide de rowNum: ''. Cependant, j'ai essayé cela sur une grille contenant des données locales (loadonce: true). Lorsque attemping pour trier les lignes de l'ensemble de la grille de données locales disparaissent. Si cette solution ne semble pas fonctionner pour les grilles avec les données locales, à moins que ce défaut a été corrigé dans une version ultérieure de jqGrid (je l'ai testé sur jqGrid 3.8.2). Si vous avez des commentaires, s'il vous plaît poster un commentaire ci-dessous!


Mise À Jour - Avril 16, 2014

Selon le jqGrid équipe c'est maintenant corrigé:

J'ai ajouté la prise en charge de définir différentes valeurs d'affichage sur pager de sélectionner la zone, y compris -1 pour tous.

Je n'ai pas eu la chance de tester pour confirmer la correction, si. Sans doute ce changement sera dans la prochaine version après jqGrid 4.6.0.

9voto

C Dolan Points 169

jqgrid (3.5 en tout cas) ne semble pas avoir un moyen élégant de le faire. Le mieux que j'ai trouvé jusqu'à présent est d'ajouter quelque chose de similaire aux options suivantes de votre grille:

 rowList:[10,20,30,100000000],
loadComplete: function() {
    $("option[value=100000000]").text('All');
},
 

Où 100000000 est un nombre arbitrairement supérieur au nombre maximal de lignes que vous retournerez jamais et où la ligne option [valeur =] est affichée de manière à rendre votre interface utilisateur un peu plus agréable. Jenky, mais travaille pour moi.

4voto

Yash Points 654

si vous ne souhaitez pas utiliser la pagination, changez le code côté serveur pour renvoyer simplement toutes les lignes. ne pas utiliser le paramètre de lignes du tout.

si vous voulez avoir la liste des lignes mais avez aussi une option pour tout afficher, alors faites quelque chose comme ça dans les propriétés de la grille

 jQuery("#statement_mods").jqGrid({
  rowList:['ALL',30,50,100,200]
});
 

puis dans le code côté serveur, assurez-vous d'ignorer le paramètre rows si GET ['rows'] = 'ALL'

4voto

avijendr Points 777

J'ai fait ce travail ::

 // Step1 - defines the rows
jqGridOptions.rowList =[10, 50, 100, 500, 'All'];
...
...
// Step2 - Change the 'All' to a meaningful value 
loadComplete: function (data) {
   $(".ui-pg-selbox option[value='All']").val(1000);
}
 

2voto

JULIEN Points 21

Si vous avez défini la pagination dans la barre de navigation, vous pouvez également accéder au nombre total de lignes écrites dans le coin inférieur droit de la grille, puis les ajouter à l’option RowList générée.

Faites quelque chose comme:

     // Get the total number of rows and delete space between numbers (Split the content of the div depending of the language (for me french)

var val=jQuery("#pager_right div").text().split('sur')[jQuery("#pager_right div").text().split('sur').length-1].split(' ').join('');

    // And do the appending if the option isn't already added

if(!$(".ui-pg-selbox option[value='"+val+"']").length > 0)
    jQuery(".ui-pg-selbox").append($('<option></option>').val(val).html(val));
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X