tigerskin
Messages postés39Date d'inscriptionjeudi 26 mai 2005StatutMembreDernière intervention24 juillet 2012
-
29 mars 2007 à 15:02
cs_coq
Messages postés6350Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014
-
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 !!!
cs_coq
Messages postés6350Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 31 mars 2007 à 15:39
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à.
tigerskin
Messages postés39Date d'inscriptionjeudi 26 mai 2005StatutMembreDernière intervention24 juillet 2012 2 avril 2007 à 11:03
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 :| ?