nathdiscaz
Messages postés17Date d'inscriptionmardi 3 mai 2005StatutMembreDernière intervention12 juin 2006
-
29 avril 2006 à 15:51
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 2013
-
29 avril 2006 à 20:34
Bonjour,
j'utilise Icomparer pour trier les column de ma listeview par ordre croissant la premiere fois puis par ordre décroissant au second clique
jusqu'ici aucun probleme
mais je souhaite trier lorsqu'on clique sur la premiere column suivant deux criteres :
Le nom de la personne et le tag de l'image associé
il faut par exemple
personne a tag a
personne c tag a
paersonne e tag a
personne b tag b
personne f tag b
...
Pouvez vous me donner une piste...
Dans ma classe ListViewItemSorter j'utilise
return String.Compare(itemx, itemy);
ou
return String.Compare(itemy, itemx);
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 29 avril 2006 à 20:34
C'est certainement bien plus rapide de faire le tris en dehors du listView
En tout cas, faut te servir des méthodes BeginUpdate()et
EndUpdate() si tu tries dans le control !
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 29 avril 2006 à 17:27
J'avoue que j'ai du mal a saisir ton ordre de tri.
Qui est prioritaire, le tag ou le nom ?
Si c'est le tag, la liste doit bien devenir :
personne c tag a personne e tag a personne b tag b personne f tag b personne a tag c
Si c'est le nom (il faut donc inverser le code précédent), elle doit devenir :
personne a tag c
personne b tag b
personne c tag a
personne e tag a
personne f tag b
D'après ce que tu dis, tu veux :
personne a tag c
personne c tag a
personne e tag a
personne b tag b
personne f tag b
nathdiscaz
Messages postés17Date d'inscriptionmardi 3 mai 2005StatutMembreDernière intervention12 juin 2006 29 avril 2006 à 17:32
Je veux ke les personnes soit triés par ordre alphabétique commencé par la personne a puis lui mettre toute les personnes ayany le meme tag qu'elle
Ensuite la personne suivante toujours par ordre alphabétique
personne a tag c //Le a car premier
personne b tag b //Le b car second
personne f tag b //le f car tag meme que b
personne c tag a //Le c car troisieme
personne e tag a //Le e car meme tag ke le c
Je prend en compte en fait le nom pour choisir sur quel tag je dois commencer a trier
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 29 avril 2006 à 17:42
Alors là je ne crois pas que le Sorter qui te donne 2 items et son algo QuickSort soit la bonne solution.
Car là en gros ça correspond à :
1) trouver la première personne par ordre alphabétique
2) chercher la liste des personnes ayant le même tag dans la liste des personnes restantes
3) trier cette liste par ordre alphabétique
4) les insérer à la suite de la personne trouvée en 1
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 29 avril 2006 à 18:07
Une "montée" n'est jamais rien d'autre qu'une suppression suivie d'une insertion, donc en te servant de Remove/RemoveAt sur l'item à "monter" puis de Insert avec l'index de l'item à "descendre".
Mais dans ton cas je me demande si effectuer le tri en dehors du contrôle puis recharger l'ensemble des items une fois triés ne serait pas plus judicieux.