|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre à l'essai
![]() jeremy developpeur Inscription : décembre 2011 Messages : 102 ![]() |
Bonjour,
Je souhaiterai pouvoir trier par ordre croissant ou décroissant ma "Columns(0)" soit à l'aide de 2 button soit par l'entête de la colonne si cela en est possible ? Ma "Columns(0)" comporte 10 lignes numérotées de 1 à 10 Je m'apercois dans Columns -> Séléction de la colonne -> ShortMode= Automatic (Pour les colonnes ou je ne souhaites pas que l'utilisateur les tries je les passeraient en "NotSortable) J'ai trouvé ceci comme exemple : http://msdn.microsoft.com/fr-fr/libr.../0868ft3z.aspx mais je n'arrive pas à l'assigner sur ma colonne en question ![]() Avez-vous une idée ? Merci |
|
|
00
|
|
|
#2 | ||
|
Membre expérimenté
![]() Yves TRICHAUDTechnicien bio médical Inscription : décembre 2012 Messages : 228 ![]() |
Salut,
Au risque de ne pas avoir compris ce que tu voulais faire, quand tu met la propriété .SortMode sur Automatic, lorsque tu clique sur l'entête de la colonne ça te trie les données quand tu met la propriété .SortMode sur Programmatic, c'est toi qui doit gérer le tri de la colonne avec des bouttons par exemple mais le tout par code. Et pour finir, en mettant NotSortable, les colonnes ne se trieront jamais. J'avais mal lu ton post. Si tu veux vraiment te servir de bouttons pour trier tes colonnes, met la propriété .SortMode de tes colonnes sur Programmatic puis utilise la méthode .Sort() de ton DataGridView en lui passant la colonne que tu veux trier et le sens comme paramètres ex : Code :
Il faudra que tu passe par la personnalisation du tri. http://msdn.microsoft.com/fr-fr/libr.../ms171608.aspx A moins que quelqu'un ai une autre solution. Bonne journée et bonne fin d'année. |
||
|
|
10
|
|
|
#3 | ||
|
Membre à l'essai
![]() jeremy developpeur Inscription : décembre 2011 Messages : 102 ![]() |
Merci pour ta réponse
![]() Je vais essayer de passer par des buttons donc ma colonne est en ShortMode = Programmatic Voici le code pour mes boutons : Code :
Exemple : 1 2 3 4 10 15 25 30 donne en ordre croissant : 1 10 15 2 25 3 30 4 etc..... Je vais essayer de cogiter sur ton lien pour la personnalisation du tri pour obtenir le bon ordre Si une personne a une autre solution je suis tout à fait preneur Merci |
||
|
|
00
|
|
|
#4 |
|
Membre expérimenté
![]() Yves TRICHAUDTechnicien bio médical Inscription : décembre 2012 Messages : 228 ![]() |
Salut,
Perso si je devais le faire (ce qui devrais pas tarder à arriver) je pense que j'utiliser l'abonnement à l'évènement SortCompare et j'essayerais de caster le contenu de la cellule en Integer puis je les compare. Je n'ai pas écrit de code pour le faire mais ça me semble être le plus simple. |
|
|
00
|
|
|
#5 |
|
Membre à l'essai
![]() jeremy developpeur Inscription : décembre 2011 Messages : 102 ![]() |
Je vais essayer de déchiffrer ce que tu m'a dis
|
|
|
00
|
|
|
#6 | ||||
|
Membre actif
![]() Michel Devaux Inscription : janvier 2010 Messages : 102 ![]() |
Bon à la louche j'ai fait ça rapidos :
1) On customise l'évènement _SortCompare. Désormais le tri se fait en fonction des valeurs décimales du contenu des cellules. On peut vérifier que l'ordre numérique est bien respecté en cliquant sur le libellé des colonnes. Code :
A titre d'exemple, j'ai réalisé un bouton qui lance un tri croissant dans la colonne portant le nom "ColonnePrixUnit". Code :
|
||||
|
|
10
|
|
|
#7 |
|
Membre à l'essai
![]() jeremy developpeur Inscription : décembre 2011 Messages : 102 ![]() |
Merci beaucoup mdevaux62 pour tes réponses trés complètes. Je suis super content car les débuts sont dures pour la programmation d'un datagridview
J'ai donc adapter ton exemple de trie dans mes différentes colonnes mais j'obtiens le même résultat que précedement c'est-à-dire : 1 2 3 4 9 10 11 en ordre décroissant j'obtiens : 9 4 3 2 11 10 1 En fait la raison d'avoir un tri qui fonctionne par numéro est que j'aimerai placer mes articles pour les regrouper dans des familles. Exemple: admettons que j'ai plusieurs légume dans ma colonne "Num. article" avec le n°20, si je rajoute un article a la fin de mon DGV et que je le met en N°20 dans la colonne "Num. article" et bien il se placerai a la suite des autres articles légumes. Pour le moment c'est la seul solution que j'ai trouver pour déplacer une ligne à l'endroit ou je souhaite Si je n'y arrive pas avec les chiffres et bien je passerai par l'alphabet étant donnée que les cellules sont considéré comme du texte |
|
|
00
|
|
|
#8 | ||
|
Membre expérimenté
![]() Yves TRICHAUDTechnicien bio médical Inscription : décembre 2012 Messages : 228 ![]() |
Salut,
Après avoir testé longuement de sortir quelque chose, j'ai finis par trouver la solution toute simple donnée par emmr.rida sur ce site ![]() Code :
Ps: Evites les boutons ça sature l'interface XD Merci à lui pour cette aide |
||
|
|
10
|
|
|
#9 | ||
|
Membre à l'essai
![]() jeremy developpeur Inscription : décembre 2011 Messages : 102 ![]() |
Merci pour ta rép Rainui, mais aprés pas mal d'essai cela ne change rien de mon côté
j'ai passé ma colonne en shortmode = Automatic puis dans mon évenement ShortCompare j'y ai mi ceci : Code :
|
||
|
|
00
|
|
|
#10 |
|
Membre expérimenté
![]() Yves TRICHAUDTechnicien bio médical Inscription : décembre 2012 Messages : 228 ![]() |
Salut,
Tu as bien mis ce code dans une Sub qui a les bons arguments et qui est bien liée à l'évènement DataGridView.SortCompare? Le paramètre e est bien du type DataGridViewSortCompareEventArgs? Tu as bien Handles DataGridView1.SortCompare sur la definition de ta Sub? Le code étant simple, je ne vois vraiment pas pourquoi ça fonctionnerait chez moi et pas chez toi |
|
|
10
|
|
|
#11 | |
|
Membre émérite
![]() Inscription : octobre 2006 Messages : 534 ![]() |
Bonsoir,
à noter que l'event SortCompare est inopérant si le DGV est "bindé" à une source de données. Citation:
|
|
|
|
20
|
|
|
#12 | |
|
Membre actif
![]() Michel Devaux Inscription : janvier 2010 Messages : 102 ![]() |
Citation:
Reste la solution (lourdingue, mais peut-être temporaire, en attendant mieux) de tout traiter à l'arrache via une double boucle et un tri à bulle. |
|
|
|
10
|
|
|
#13 |
|
Membre à l'essai
![]() jeremy developpeur Inscription : décembre 2011 Messages : 102 ![]() |
Merci beaucoup pour vos réponses
Bon et bien je vais rester sur du format texte car ce n'est malheureusement pas de mon niveau |
|
|
00
|
|
|
#14 |
|
Membre expérimenté
![]() Yves TRICHAUDTechnicien bio médical Inscription : décembre 2012 Messages : 228 ![]() |
Salut,
Bien vu Chrismonoye. Jeremyvb11, il te reste la solution d'intercepter le l'évènement Click sur la colonne, si c'est une de tes colonnes de type numérique, tu changes le datasource de ton datagrigview en triant ta DataTable ou ton DataAdapter suivant tes conditions. Au final c'est tout aussi simple xD |
|
|
10
|
|
|
#15 |
|
Expert Confirmé Sénior
![]() Inscription : janvier 2006 Messages : 5 390 ![]() |
Pour un dataSource bindé, la seule solution que j'ai trouvée et implémentée pour résoudre ce problème sans changer le DataSource lors du click consiste :
__________________
" Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com