Problem de tri avec un dataGridView [Résolu]

Deeddolith 20 Messages postés jeudi 24 novembre 2005Date d'inscription 4 octobre 2008 Dernière intervention - 18 sept. 2008 à 18:33 - Dernière réponse : Deeddolith 20 Messages postés jeudi 24 novembre 2005Date d'inscription 4 octobre 2008 Dernière intervention
- 18 sept. 2008 à 23:57
Bonjour

J'utilise un datagridview (dtgrd_drop) que je rempli a la main.
J'ai entre autre une colonne formatée en pourcentage (appelée dropRatePercent), et une autre invisible (appelée dropRate) avec les meme valeurs sans format.

Je voudrais, lorsque l'on clique sur la colonne dropRatePercent,  trier selon les valeurs de la colonne dropRate.

J'ai ecrit le code suivant:

01      Private

Sub dtgrd_drop_SortCompare(
ByVal sender
As
Object,
ByVal e
As System.Windows.Forms.DataGridViewSortCompareEventArgs)
Handles dtgrd_drop.SortCompare
02

03         If (e.Column.Name =
"dropRatePercent")
Then
04            e.Handled =
True
05            If (dtgrd_drop.SortOrder = SortOrder.Ascending)
Then
06               dtgrd_drop.Sort(dtgrd_drop.Columns(
"dropRate"), System.ComponentModel.ListSortDirection.Descending)

07            Else
08               dtgrd_drop.Sort(dtgrd_drop.Columns(
"dropRate"), System.ComponentModel.ListSortDirection.Ascending)

09            End
If
10         End
If
11      End
Sub

Mais rien ne se passe (dans le sens du texte), la colonne ne bouge pas.

Par contre si l'on met en commentaire la ligne 08, mon datagrid est alors trié comme prevu.

une idée ?
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
cs_thierry la fronde 351 Messages postés mercredi 21 juillet 2004Date d'inscription 12 août 2009 Dernière intervention - 18 sept. 2008 à 18:44
3
Merci
Bonsoir,

Ne faudrait-il pas utiliser l'événément ColumnClick au lieu de SortCompare?

thierry la fronde

Merci cs_thierry la fronde 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de cs_thierry la fronde
Deeddolith 20 Messages postés jeudi 24 novembre 2005Date d'inscription 4 octobre 2008 Dernière intervention - 18 sept. 2008 à 23:57
0
Merci
Merci, tu m'a apporté une partie de la réponse, en effet, je n'utilisait pas le bon évennement.
Je pense que tu voulais parler de ColumnHeaderMouseClick, parce que ColumnClick, j'ai pas trouvé.


Je me suis appercu que dtgrd_drop.SortOrder retombais toujours a la valeur Sortorder.Ascending lors de l'appel de mon évennement, je pense que cela est du au fait que je trie une colonne invisible.
Qu'a cela ne tienne, passons par une variable global, initialisée a Sortorder.None.

Voici donc mon code revu et corrigé:

Dim dropSortDirection AsSortOrder = SortOrder.None




Private





Sub

dtgrd_drop_ColumnHeaderMouseClick(


ByVal

sender


As





Object

,


ByVal

e


As

System.Windows.Forms.DataGridViewCellMouseEventArgs)


Handles

dtgrd_drop.ColumnHeaderMouseClick



   Dim

sortColumn


As

DataGridViewColumn



   Dim

displayColumn


As

DataGridViewColumn



   If

(dtgrd_drop.Columns(e.ColumnIndex).Name =


"dropRatePercent"

)


Then


      sortColumn = dtgrd_drop.Columns(


"DropRate"

)
      displayColumn = dtgrd_drop.Columns(


"DropRatePercent"

)



   Else


      sortColumn =


Nothing


      displayColumn =


Nothing



   End





If



   If

sortColumn


IsNot





Nothing





Then



      Select





Case

dropSortDirection



         Case

SortOrder.Ascending
            dtgrd_drop.Sort(sortColumn, System.ComponentModel.ListSortDirection.Descending)
            displayColumn.HeaderCell.SortGlyphDirection = SortOrder.Descending
            dropSortDirection = SortOrder.Descending



         Case

SortOrder.Descending
            dtgrd_drop.Sort(sortColumn, System.ComponentModel.ListSortDirection.Ascending)
            displayColumn.HeaderCell.SortGlyphDirection = SortOrder.Ascending
            dropSortDirection = SortOrder.Ascending



         Case

SortOrder.None
            dtgrd_drop.Sort(sortColumn, System.ComponentModel.ListSortDirection.Ascending)
            displayColumn.HeaderCell.SortGlyphDirection = SortOrder.Ascending
            dropSortDirection = SortOrder.Ascending



      End





Select



   End





If



End





Sub
Commenter la réponse de Deeddolith

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.