ListView tri multicolonnes [Résolu]

tigerskin 39 Messages postés jeudi 26 mai 2005Date d'inscription 24 juillet 2012 Dernière intervention - 29 mars 2007 à 15:02 - Dernière réponse : cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention
- 2 avril 2007 à 18:41
Bonjour la communauté !

J'ai un petit souci avec un projet C#,je m'explique : je dois réaliser une DVDthèque sans base de données. J'utilise donc le système des fichiers XML pour stocker mes données, etc...Tout ceci marche sans problème, mon application est quasiment aboutie, mais il me reste un souci avec ma ListView qui affiche mes données des DVD :
j'ai dérivé un IComparer pour trier mes objets, ça marche, et j'ai aussi géré le clic sur les colonnes de ma ListView. En gros, je vous fait pas de dessin, lorsque je clique sur une colonne, ça me met le contenu dans l'ordre, normal !

Mon souci, c'est quand j'essaie de trier les genres : en effet, j'ai plusieurs DVD qui ont comme genre "Action", et quand je veux trier mes DVD par genre, ça met bien dans l'ordre dans la ListView, mais mes DVD sont parfois "inversés" (vu que Action et Action c'est pareil je sais pas comment le programme compare )

Donc il faudrait que je trie mes DVD ET par genre ET par nom et je galère un peu

Si une âme charitable pouvait m'indiquer la marche à suivre ça m'aiderait beaucoup !!!

Merci d'avance !!!
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 31 mars 2007 à 15:39
3
Merci
Salut,

Dans ce cas là il faut que tu tries sur les 2 colonnes.

En gros tu veux que les DVD soient groupés par action, et que ces groupes soient ordonnés par titre de DVD.
Du coup avoir :

A Action
D Action
C Drame
B Western

Pour le petit exemple (bateau) : 

   [System.Diagnostics.DebuggerDisplay("{Title} / {Genre}")]
   class DVD
   {
       public DVD(String title, String genre)
       {
           this._title = title;
           this._genre = genre;
       }


       private String _title;
       private String _genre;


       public String Title
       {
           get { return _title; }
           set { _title = value; }
       }


       public String Genre
       {
           get { return _genre; }
           set { _genre = value; }
       }
   }

et l'implémentation de IComparer :

    class DVDComparer : IComparer
    {
        int IComparer.Compare(object x, object y)
        {
            Int32 ret;


            DVD xDVD = x as DVD;
            DVD yDVD = y as DVD;


            Int32 genreCompare = String.Compare(xDVD.Genre, yDVD.Genre, StringComparison.CurrentCultureIgnoreCase);
            // Si les genres sont identiques, on compare les titres
            if ( genreCompare == 0)
            {
                ret = String.Compare(xDVD.Title, yDVD.Title, StringComparison.CurrentCultureIgnoreCase);
            }
            else
            {
                ret = genreCompare;
            }


            return ret;
        }
    }

Il y aura probablement des ajustements à faire sur la comparaison mais le principe est là.

/*
coq
MVP Visual C#
CoqBlog
*/

Merci cs_coq 3

codes-sources a aidé 82 internautes ce mois-ci

Commenter la réponse de cs_coq
Meilleure réponse
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 2 avril 2007 à 18:41
3
Merci
Ce sont des attributs.
Dans le cas de l'attribut DebuggerDisplay, son rôle est essentiellement de faciliter le debugage : http://msdn2.microsoft.com/fr-fr/library/x810d419(VS.80).aspx

/*
coq
MVP Visual C#
CoqBlog
*/

Merci cs_coq 3

codes-sources a aidé 82 internautes ce mois-ci

Commenter la réponse de cs_coq
tigerskin 39 Messages postés jeudi 26 mai 2005Date d'inscription 24 juillet 2012 Dernière intervention - 2 avril 2007 à 11:03
0
Merci
Merci bien coq !!!!

En fait c'est tout bête j'avais pas vu ça comme ça ^^!!!
Et juste une petite question pour la forme : je vois beaucoup de choses entre crochets (ici [System.Diagnostics.DebuggerDisplay("{Title} / {Genre}")]) ça sert à quoi exactement :| ?
Commenter la réponse de tigerskin

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.