Bonjour,
Tout est dans le titre, quand je modifie le contenu de mon datadrid, celui-ci est trié automatiquement en fonction du tri en cours.
J'aimerai donc annuler ce tri, pour que mes lignes ne bougent plus.
Merci d'avance.
Version imprimable
Bonjour,
Tout est dans le titre, quand je modifie le contenu de mon datadrid, celui-ci est trié automatiquement en fonction du tri en cours.
J'aimerai donc annuler ce tri, pour que mes lignes ne bougent plus.
Merci d'avance.
Bonjour,
Avant de poster as tu regardé la documentation officielle ?
La propriété sortable te permet de désactiver le tri sur une colonne.
Oui j'ai chercher un peu partout.
Sortable : permet d'indiquer que l'utilisateur peut trier ou non la colonne,
dans mon cas, je ne veux pas bloquer l'utilisateur,
mais lorsque la grille est mise à jour je veux pouvoir désactiver le tri s'il y en a un.
Que veux tu dire par ça ?
Ce n'est pas un problème de tri mais de chargement de tes données non ? Si tu fournis une nouvelle liste à ta DataGrid, il va charger les données tels que tu les a fourni. Il faudrait donc les trier à la source c'est à dire dans ta requête SQL par exemple. Ou alors réappliquer le tri qui a été effectué sur ta datagrid avant le dernier chargement ce qui implique :Citation:
mais lorsque la grille est mise à jour je veux pouvoir désactiver le tri s'il y en a un.
- mémoriser le tri,
- appliquer ce tri sur ta datagrid après le chargement des nouvelles données.
Non ?
Je pense que c'est l'inverse qu'il veut, au contraire son tri reste alors qu'il n'en veut plus si j'ai bien compris.
Normalement si tu réaffecte un nouveau dataProvider à ta grille le tri saute. Peut etre as tu gardé le même objet comme dataProvider et que tu as changé son contenu. Essai en affecttant un nouvel objet comme dataProvider.
Je ne fournis pas une nouvelle liste je modifie juste une ligne, mon dataprovider est un ArrayCollection et je modifie les données avec itemUpdated
Je voudrai me débarrasser du tri cad arrêter le tri sur la colonne.
le truc tout simple:
1. j'ai 3 colonnes, je clique sur la 2ème celle-ci est triée,
2. je modifie une ligne
3. la ligne est automatiquement déplacée en suivant le tri de la colonne 2 :(
je ne veux pas que la ligne soit déplacée, donc je voudrai faire ceci:
1. je clique sur la 2ème celle-ci est triée,
2. j'annule le tri de la colonne 2 (rien n'est modifié)
3. je modifie une ligne
4. cette ligne reste là où elle est
Je ne sais pas si je suis plus clair :?
Ca y est je pense avoir saisi :
-> Oi est l'objet i
-> Entre parenthese sa valeur
Tu as initialement dans ton provider : O1(1) -O2(3) - O3(2)
Tu tris (sur la valeur de l'objet) ce qui te donne : O1(1) - O3(2) - O2(3)
Tu modifies O3 : O3(2) -> O3(4)
Tu obtiens le tri : O1(1) - O2(3) - O3(4)
Tu voudrais (sans tris) : O1(1) - O3(4) - O2(3)
Ceci me semble compromis.
La grille affichera dans l ordre du dataprovider s'il n y a pas de tri. Donc pour moi la seul solution serai de recopier ton dataprovider dans l'odre du tri avant de faire ta modif. Et tu affectes ton nouveau dataprovider a ta grille. De cette facon tu conserve l ordre du tri et tu perd le tri sur la grille.
C'est effectivement ce que je voudrais mais ça me semble un peu lourd comme solution,
en affectant un nouveau provider je risque de perdre la ligne sélectionnée, d'avoir un scrolling de l'affichage et je ne sais quoi encore...
Ce qui est étonnant c'est de pouvoir sélectionner un tri ascendant / descendant d'un simple clic, mais qu'il n'est pas possible de s'en débarrasser.
Je pourrais peut être mettre le tri sur une colonne invisible dans laquelle il n'y aurait rien, mais je ne sais pas modifier le tri par le code....
???
:calim2:
J'ai trouvé comment enlever le tri sur les colonnes.
En fait le tri de la colonne s'effectue en assignant une function de tri a ton dataprovider. Il suffit donc de l'enlever.
(dataProvider as ArrayCollection).sort = null;
(dataProvider as ArrayCollection).refresh();
Mais ca ne résoudra pas ton problème puisqu en faisant cela la grille va se rafraichir sans tri donc les éléments vont se remettre dans l'ordre d'origine (O1O2O3 dans mon exemple et non O1O3O2 comme tu voudrais)
Je doute qu'il y ai une solution pour ce que tu veux sans toucher manuellement a l'ordre des elements dans ton dataprovider.
Excellent ça marche très bien, je ne fais pas le refresh() pour que mes données restent tel quel et c'est tout bon.
:ccool:
Il reste juste le petit triangle de tri en haut de la colonne, mais c'est un détail.
Si par hasard tu sais comment l'enlever ? mais c'est déjà très bien comme ça.
A mon avis le triangle ne s en ira que si tu effectue le refresh.
Par contre si le triangle t'embête vraiment, tu peux externaliser les tris pour ne plus passer par les clics sur les colonnes (dans une combobox comme le font certains site par exemple avec une liste de choix de tri). Pour cela il te suffit de créer toi même des Objets Sort et de les affecter à ton dataProvider.
Content d'avoir pu t'aider ;)
En tout cas encore merci !