Trie nombre listview

Résolu
cs_syl2 Messages postés 49 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 7 juillet 2005 - 9 déc. 2004 à 22:03
cs_syl2 Messages postés 49 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 7 juillet 2005 - 10 déc. 2004 à 11:13
Bonjour,

Je suis en train de réaliser un agenda en C# et je suis confronté au problème du trie d'une colonne d'une listview quand des nombres sont stockés dans la colonne.

J'ai par exemple dans une colonne les valeurs suivantes:

25
-35
46
-7

et je voudrais avoir à l'affichage dans l'ordre, les valeurs

-35
-7
25
46

J'ai trouvé beaucoup de solutions, exclusivement en VB et comme je ne souhaite pas utiliser une DLL déjà existante, cela limite le champ de recherche.

Merci à tous ceux qui pourront m'éclairer un petit peu sur la question.

Sylvain

4 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
10 déc. 2004 à 08:54
avec qqch de ce genre :

private void listView_Agenda_ColumnClick(object sender, System.Windows.Forms.ColumnClickEventArgs e)
{
if ( e.Column == columnHeader_Chiffre.Index )
{
listView_Agenda.ListViewItemSorter = new ChiffresComparer(e.Column);
listView_Agenda.Sort();
}
}

private class ChiffresComparer : IComparer
{
public ChiffresComparer(int column)
{
m_column = column;
}

private int m_column;

#region Membres de IComparer

public int Compare(object x, object y)
{
int iX = int.Parse( ((ListViewItem)x).Text );
int iY = int.Parse( ((ListViewItem)y).Text );
return iX.CompareTo(iY);
}

#endregion

}

je te laisse mettre la gestion d'erreurs :)

Cocoricoooooooo !!!!
coq
MVP Visual C#
3
cs_syl2 Messages postés 49 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 7 juillet 2005 1
9 déc. 2004 à 22:35
Re bonsoir,

j'ai trouvé une solution, certes c un peu une solution de bidouille mais ça marche ....

Si mon nombre est négatif, je remplace le - par un 0, et si le nombre est positif, je rajoute un 1 dans ma chaine.

Cela me donne les valeurs suivantes :

035
07
125
146

et dans ce cas, le classement est ok

Il ne me reste plus qu'à trouver comment ne pas permettre à l'utilisateur de voir ma colonne temporaire pour le classement et ce sera parfait

MErci à tous

Sylvain
0
cs_syl2 Messages postés 49 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 7 juillet 2005 1
9 déc. 2004 à 22:41
En fait, ma méthode n'est pas très optimisé, j'ai parlé trop vite :'(.

En effet, si j'ai -7 et -88, alors j'aurais -7 qui sera avant le -88 :(

Sylvain
0
cs_syl2 Messages postés 49 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 7 juillet 2005 1
10 déc. 2004 à 11:13
Salut,

Merci beaucoup pour cette réponse rapide et efficace !!!!

Ca marche parfaitement

Sylvain
0
Rejoignez-nous