2012-03-20 4 views

Répondre

9

Sur la dernière version, vous pouvez le faire:

grid.setSortColumn("myColId",true); //columnId, ascending 

Vous pouvez également définir plusieurs avec setSortColumn * s *

+0

Puisque j'utilise DataView, je ne crois pas que cette méthode fonctionnera. J'ai fini par déclencher 'dataView.sort (comparateur, false)' après avoir réglé 'sortcol = 'myColName''. (Dois-je ajouter et accepter ma propre réponse?) – podcastfan88

+0

Je me trompe. Je l'ai essayé en utilisant 'dataView.setSortColumn', qui n'a pas fonctionné. Mais l'utiliser sur mon exemple de grille a fonctionné. Comme l'a fait ma solution ci-dessus. – podcastfan88

+0

@stuart J'ai essayé ceci mais tout ce qu'il fait est de montrer que la colonne de tri est cliquée. Il ne déclenche pas de tri sur mon DataView, qui est abonné à l'événement onSort. Comment puis-je l'obtenir pour déclencher cela? –

1

Voir ma solution ici. Cela s'applique au tri sur une colonne initialement sans utiliser Dataview.

Calling sort on slickgrid

Je pense qu'il fait ce que vous voulez.

Btw puisque vous utilisez Dataview. Vous pouvez aussi essayer. Mais je n'ai pas personnellement essayé cela.

dataview.reSort() 
0

J'ai eu une idée intéressante qui a travaillé, et qui était juste permettre à l'en-tête multi-colonnes de tri (par exemple multi-colonne sort.html), puis une fois la grille a été chargée simulent un clic () sur la ligne d'en-tête je voulais être trié quand la grille est apparue ("time" est le nom de ma colonne que je triais). L'ID de l'en-tête de colonne est calculée similaire à l'ID de la racine div de la grille (au moins pour l'instant: 0)):

 var gridId = $('#myGrid').attr("class"); 
     gridId = '#'+gridId.replace(" ui-widget","")+'time'; 
     $(gridId).click(); 

L'utilisateur peut alors cliquer sur ce que les autres en-têtes de colonnes qu'ils veulent, mais je juste cliqué sur le premier pour eux.

Questions connexes