begin process at 2010 02 10 08:05:35
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C#

 > 

Archives

 > 

Graphique

 > 

Tri dans un listView


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Tri dans un listView

mercredi 24 août 2005 à 17:50:06 | Tri dans un listView

t_barbillon

Salut,
Comment faire pour que le tri dans une listView (Sorting) dépendent de la colonne cliquée ?
En gros si l'utilisateur clique sur la colonne 1, la liste est trié suivant la colonne 1, sur la 2, suivant le contenu de la colonne 2 ...
Peut ai-je raté un truc, mais là je suis perplexe !
mercredi 24 août 2005 à 18:05:49 | Re : Tri dans un listView

zebobo5

Membre Club
Tu crée une classe de comparaison de données :

class ListViewItemComparer : IComparer
{
   private int col;
   private SortOrder order;
   public ListViewItemComparer()
   {
      col = 0;
      order =
SortOrder.Ascending;
   }
   public ListViewItemComparer(int column, SortOrder order)
   {
      col = column;
      this.order = order;
   }
   public int Compare(object x, object y) 
   {
      int returnVal= -1;
      returnVal =
String.Compare(((ListViewItem)x).SubItems[col].Text,
      ((
ListViewItem)y).SubItems[col].Text);
      if (order == SortOrder.Descending)
      returnVal *= -1;
      return returnVal;
   }
}

Puis tu n'as plus qu'à faire un tri losque l'on clique sur l'entete de la colonne, d'où :

private void listView1_ColumnClick(object sender, ColumnClickEventArgs e)
{
   if (listView1.Sorting == SortOrder.Ascending)
   {
      listView1.Sorting =
SortOrder.Descending;
   }
   else
   {   
      listView1.Sorting = SortOrder.Ascending;
   }
   listView1.Sort();
   this.listView1.ListViewItemSorter = new ListViewItemComparer(e.Column, listView1.Sorting);
}

Et voilà


ZeBobo5
N'oubliez pas de cloturer votre post.
jeudi 25 août 2005 à 10:30:16 | Re : Tri dans un listView

t_barbillon

Merci, ça marche bien
Mais je ne comprend pas comment est utilisé la methode Compare
jeudi 25 août 2005 à 10:47:15 | Re : Tri dans un listView

zebobo5

Membre Club
int i = String.Compare("a", "b");
Resultat : i = -1;

int i = String.Compare("b", "a");
Resultat : i = 1;

dc si on met en ordre décroissant, i doit être du signe opposé soit : i *= -1;

dc si i = -1 alors 1er paramètre est avant le 2eme
et si i = 1 alors 1er paramètre est apres le 2eme


ZeBobo5
N'oubliez pas de cloturer votre post.
jeudi 25 août 2005 à 11:24:57 | Re : Tri dans un listView

t_barbillon

Jusque là j'avais compris, ce que je n'ai pas saisi c'est à quel moment la méthode compare est appelée !
vendredi 26 août 2005 à 00:12:07 | Re : Tri dans un listView

coq

Administrateur CodeS-SourceS
Réponse acceptée !
Salut,

C'est le contrôle ListView qui le fait quand l'utilisateur clique sur les en-têtes de colonne ou lorsque tu appelles la méthode Sort.



Cocoricoooooooo !!!!
coq
MVP Visual C#
vendredi 26 août 2005 à 08:27:24 | Re : Tri dans un listView

t_barbillon

Merci Coq, j'y vois plus clair.
vendredi 26 août 2005 à 09:24:14 | Re : Tri dans un listView

zebobo5

Membre Club
Salut,

Moi j'aurai plutot penché sur le fait que lorsque tu fait :

this.listView1.ListViewItemSorter = new ListViewItemComparer(e.Column, listView1.Sorting);

La listView instancie la class et substitue sa méthode : this.listView1.ListViewItemSorter.Compare, par la nouvelle méthode Compare de la class  ListViewItemComparer.

C'est vrai que lorsque tu fait un Sort(), il repasse dedans vu qu'on lui a assigné une nouvelle méthode de comparaison.


ZeBobo5
N'oubliez pas de cloturer votre post.
vendredi 26 août 2005 à 10:45:31 | Re : Tri dans un listView

coq

Administrateur CodeS-SourceS
En tout cas l'affectation de valeur sur cette propriété entraine elle aussi l'appel de la méthode Sort.



Cocoricoooooooo !!!!
coq
MVP Visual C#
jeudi 20 décembre 2007 à 00:32:48 | Re : Tri dans un listView

sidommou

Salut,
j'ai procédé comme vous l'avez di mais j'ai eu un pb avec .net2005. Il me sort une erreur sur la ligne suivante:

CDContent_ListView.ListViewItemSorter =

newListViewItemComparer(((ListViewItem)(e.Column)), CDContent_ListView.Sorting);

L'erreur est :
Impossible de convertir le type 'int' en 'System.Windows.Forms.ListViewItem'

Si qlq un connais la solution à mon problème, merci d'avance de répondre.

1 2

Cette discussion est classée dans : listview, tri, colonne


Répondre à ce message

Sujets en rapport avec ce message

ListView et menu contextuel en C# [ par bigflo ] Bonjour,Je cherche à mettre un menu contextuel sur une listview avec plusieurs colonnes en C#.J'y suis arrivé, mais lorsque je clique droit sur une co Listview, pb avec les colonnes [ par defcoco ] Voila mon probleme, j'ai une listview avec plusieurs colonnes, et je voudrai que lorsqu'on clique sur n'importe quel colonne ca fait un tri par rappor listview et colonne [ par shinevilkyo ] lu,voila mon pb j ai 3 colonnenumero, erreur et evenement je voudrai ajouter des element dedans mais je ne sais pas comment choisir ma colonne quelqu Evénement tri colonne datagrid [ par _Bao_ ] Bonjour,j'aimerais savoir quel est l'événement qui a lieu lorsque l'on clique sur le nom d'une colonne dans un datagrid (pour trier la colonne en ques Trie nombre listview [ par syl2 ] 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 stoc Colonne d'une listView [ par Online ] Bonjour, Je vous explique mon problème qui est assez simple mais je ne trouve pas la solution.J'ai une listview composé de 2 colonnes. Je souhaite aff Tri d'une ListView à l'aide des en-têtes [ par JuS ] Bonjour,J'ai une ListView, avec une en-tête, contenant 3 colonnes.Je souhaiterai trier ma ListView suivant la colonne correspondant à l'en-tête qui se ListView:la tite flèche de tri, elle est où??? [ par Fildomen ] SalutComment faire pour affichier la flèche de tri dans les colonnes d'un listview, comme dans windows explorer??? je l'ai pas trouvé.MerciYaoYao !! ListView : Resize de colonne [ par yfocal ] Bonjour, j'ai un petit souci avec les listview. J'ai une listview avec, pour chacun des items, un Panel de couleur affiché dans une colonne (Pan listview colonne [ par emmanuel9 ] Bonjour,Quelqun serait t'il comment resizer les colonnes d'un listview en fonction de la taille du listview lui meme ? A la base les colonnes du listv


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,499 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales