2010-09-16 8 views
16

Il semble que les propriétés jqGrid sortname et sortorder ne provoquent pas le tri de votre jeu de données - elles provoquent simplement l'affichage des flèches haut/bas.jqGrid trier par défaut?

Comment pouvez-vous trier vos données en téléchargement? Le tri fonctionne bien lorsque vous cliquez sur les en-têtes de colonne, mais je souhaite qu'un tri par défaut soit appliqué à nos données. Mise à jour: Lorsque nous cliquons sur le bouton suivant, la requête suivante trie les données. Cela provoque une interface utilisateur légèrement confuse où les données se chargent avec une flèche vers le bas sur une colonne - et les données ne sont pas triées - mais lorsque vous cliquez sur Suivant, les données sont maintenant triées.

Il semble que si j'omets le nom de tri et le tri, jqGrid affiche toujours l'icône de tri - bizarre.

Répondre

2

Essayez d'utiliser

$("#list").jqGrid('setGridParam',{ page: 1 }).trigger("reloadGrid"); 

ou

$("#list").jqGrid('setGridParam',{ rowNum: 10 }).trigger("reloadGrid"); 

(10 à la valeur remplacer que vous définissez comme paramètre rowNum). Si cela ne vous aide pas, postez votre code dans votre question.

+0

Suggérez-vous de charger la grille deux fois? La charge initiale (non triée) et une deuxième charge qui, on l'espère, sera triée? –

+0

@Marcus: Vous n'insérez aucun code dans votre question, je dois donc deviner ce que vous faites. Si vous chargez les données JSON ou XML du serveur, le serveur triera les données, vous devrez donc corriger votre code serveur. Si vous chargez les données de la source locale ou chargez le serveur comme ** unsorted ** avec "loadonce: true", vous devez ** trier ** les données une fois. Pour ce faire, vous devez actualiser les données affichées dans la page actuelle de la grille. Vous pouvez le faire avec 'trigger (" reloadGrid ")' - dans le cas de données locales, il s'agit simplement de "rafraîchir" la page en cours. Parfois, la définition de paramètres comme 'page' ou' rowNum' aide – Oleg

+0

Nous chargeons des données non triées du serveur avec 'loadonce: true'. J'essaierai de "déclencher ..." –

1

le problème est (je crois) que le paramètre sortName ni Sidx sont lus lors de la demande premier jeu de données

2

Vous pourriez avoir fait la même erreur que moi, ce qui était à la base de mon script client hors d'un ancien par exemple qui a utilisé « sortName » au lieu de « sortname »

+0

Ceci est la bonne réponse. Ma grille passe les critères de tri la première fois qu'elle demande des données. Les propriétés sont tri et tri. – jfren484

0

/Cheesy alert

Pourquoi ne pas cacher l'icône triée la première fois que vous chargez? La première fois que quelqu'un trie, le montre et les choses fonctionnent comme prévu. On dirait que vous aviez l'intention de charger le contenu non trié jusqu'à ce que l'utilisateur choisisse une colonne à trier.

+0

Je suis en quelque sorte d'accord avec cette solution ... trier la première fois en utilisant le code côté serveur de sorte qu'il affiche avec précision si chargé si vous le souhaitez trié initialement. Définissez la colonne de recherche par défaut ou masquer/afficher (http://stackoverflow.com/questions/2601476/is-it-possible-to-hide-or-manipulate-the-jqgrid-sort-icons) la colonne de tri après le L'utilisateur décide de trier en fonction de la direction dans laquelle vous allez. –

13

Vous pourriez donner le même paramètre deux fois (une erreur très courante lors de la copie du programme de préparation :) aucune infraction. Je le fais aussi.)

que vous voulez trier par OpeningDate décroissant

..... options .... 
sortname: "OpeningDate", 
sortorder: "desc", <---- assume you write this line and expect to sort descending 
..... some other options .... 
sortorder: "asc", <---- and this line may also be there but you may not be noticing it 
..... and other options .... 

la deuxième option « sortorder » remplace la première et vous ne serez pas en mesure de trier par ordre décroissant

7

je faisais face le même problème. Utiliser ce après le chargement des données:

$("#tableId").jqGrid('sortGrid','colName', false, 'asc'); 

ou

$("#tableId").sortGrid('colName', false, 'asc'); 

La grille est rechargé si la valeur booléenne est réglé sur vrai. Le dernier paramètre peut être 'asc'/'desc', en fonction de l'ordre de tri.