IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[VB.NET] Tri d'un datGridView sur 3 colonnes


Sujet :

Windows Forms

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Points : 478
    Points
    478
    Par défaut [VB.NET] Tri d'un datGridView sur 3 colonnes
    Bonjour tout le monde,

    Je suis en train d'essayer d'implémenter le sort du DGV pour que le tri se fasse sur 3 colonnes.
    En gros, je tri sur une première colonne, si la valeur est la même je passe à la colonne suivante, et si la valeur est toujours la même, je prend la valeur d'un troisième colonne pour comparer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub DGVFactoryModel_SortCompare(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewSortCompareEventArgs) _
        Handles DGVFactoryModel.SortCompare
            e.SortResult = String.Compare(e.CellValue1.ToString, e.CellValue2.ToString)
            If e.SortResult = 0 Then
                Dim result = String.Compare(DGVFactoryModel.Rows(e.RowIndex1).Cells("ColumnSousFamille").Value.ToString, _
                                            DGVFactoryModel.Rows(e.RowIndex2).Cells("ColumnSousFamille").Value.ToString)
                If result = 0 Then
                    String.Compare(DGVFactoryModel.Rows(e.RowIndex1).Cells("ColumnMachine").Value.ToString, _
                                   DGVFactoryModel.Rows(e.RowIndex2).Cells("ColumnMachine").Value.ToString)
                End If
            End If
            e.Handled = True
        End Sub
    L'exécution se passe comme prévue, pas de plantage, pas d'erreur de compilation, en pas à pas ce sont bien les bonnes valeurs qui sont comparées, mais à l'affichage le tri n'est pas effectué correctement.

    Si quelqu'un a une petite idée...


    Edit :

    J'ai oublié de préciser que j'appelle le sort de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DGVFactoryModel.Sort(ColumnPerteId, System.ComponentModel.ListSortDirection.Ascending)

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Points : 478
    Points
    478
    Par défaut
    C'est bon solution trouvée, je ne réattribuais tout simplement pas le sortResult

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub DGVFactoryModel_SortCompare(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewSortCompareEventArgs) _
        Handles DGVFactoryModel.SortCompare
            e.SortResult = String.Compare(e.CellValue1.ToString, e.CellValue2.ToString)
            If e.SortResult = 0 Then
                e.SortResult = String.Compare(DGVFactoryModel.Rows(e.RowIndex1).Cells("ColumnSousFamille").Value.ToString, _
                                            DGVFactoryModel.Rows(e.RowIndex2).Cells("ColumnSousFamille").Value.ToString)
                If e.SortResult = 0 Then
                    e.SortResult = String.Compare(DGVFactoryModel.Rows(e.RowIndex1).Cells("ColumnMachine").Value.ToString, _
                                   DGVFactoryModel.Rows(e.RowIndex2).Cells("ColumnMachine").Value.ToString)
                End If
            End If
            e.Handled = True
        End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tri d'un tableau sur une colonne
    Par defluc dans le forum Langage
    Réponses: 4
    Dernier message: 09/05/2009, 20h41
  2. Réponses: 5
    Dernier message: 28/04/2006, 14h34
  3. Tri dans une DBGrid sur un champ date au format jj/mm
    Par Jeankiki dans le forum Bases de données
    Réponses: 10
    Dernier message: 31/10/2004, 12h32
  4. [VB.NET] Exécuter une fonction VB sur un Datagrid
    Par MiJack dans le forum Windows Forms
    Réponses: 3
    Dernier message: 24/09/2004, 14h45
  5. [VB6][ListView] Tri sur chaque colonne
    Par frlap dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 26/05/2004, 11h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo