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

VB.NET Discussion :

Tri Dataviewgrid (ListSortDirection)


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 70
    Par défaut Tri Dataviewgrid (ListSortDirection)
    Bonjour,

    Je cherche à trier des Objets par prix dans une dataviewgrid
    Le problème est que le logiciel trie dans deux directions différentes selon la valeur du nombre obtenu et le nombre de chiffre de ce nombre,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataGridView_SelectionCunette.Sort(DataGridView_SelectionCunette.Columns.Item(3), System.ComponentModel.ListSortDirection.Ascending)
    Avec cette ligne de code, on aura par exemple :

    12
    14
    18
    2
    3
    4

    Comment remédier à ce problème?

    Merci par avance

  2. #2
    Membre émérite Avatar de yonpo
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2010
    Messages
    617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 617
    Par défaut
    Salut,

    le sujet a été abordé ici:http://www.developpez.net/forums/d97...-datagridview/

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 70
    Par défaut
    en gros, il n'y a pas de méthode directe?

    je ne sais pas encore créer une instruction et un cadre de procédure de gestion d'un évènement en conception.

  4. #4
    Membre émérite Avatar de yonpo
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2010
    Messages
    617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 617
    Par défaut
    Si le tri se fait de cette façon, c'est que la colonne sur laquelle se fait le tri contient des string d'où l'ordre du tri. Il faut convertir la colonne dans un type (integer?) afin d'obtenir un tri juste.

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 70
    Par défaut
    c'est aussi ce qu'il m'avait semblé, je n'ai cependant pas trouvé la commande pour le faire.

    Comment peut on l'implémenter?

  6. #6
    Membre émérite Avatar de yonpo
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2010
    Messages
    617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 617
    Par défaut
    J'avais donné la solution dans mon premier poste

    Voici le code c# en vb:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub DataGridView1_SortCompare(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewSortCompareEventArgs) Handles DataGridView1.SortCompare
            If (e.Column.Name = "Column1") Then 'Nom de la colonne où tu souhaites faire le tri
     
                e.SortResult = System.Int32.Parse(e.CellValue1.ToString()).CompareTo(System.Int32.Parse(e.CellValue2.ToString()))
                e.Handled = True
            End If
        End Sub

  7. #7
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 70
    Par défaut
    ça ne marche pas

    il me dit :
    {"Le format de la chaîne d'entrée est incorrect."}

  8. #8
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 70
    Par défaut
    en fait, la solution dans ce cas est de remplacer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    e.SortResult = System.Int64.Parse(e.CellValue1.ToString).CompareTo(System.Int64.Parse(e.CellValue2.ToString))
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    e.SortResult = Val(e.CellValue1.ToString).CompareTo(Val(e.CellValue2.ToString))
    voici donc mon code:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub DataGridView_SelectionCunette_SortCompare(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewSortCompareEventArgs) Handles DataGridView_SelectionCunette.SortCompare
            If (e.Column.Name = "PrixVente") Then 'Nom de la colonne où tu souhaites faire le tri
     
                'e.SortResult = System.Int64.Parse(e.CellValue1.ToString).CompareTo(System.Int64.Parse(e.CellValue2.ToString))
                e.SortResult = Val(e.CellValue1.ToString).CompareTo(Val(e.CellValue2.ToString))
                e.Handled = True
            End If
        End Sub

    Merci pour votre aide !

  9. #9
    Membre émérite Avatar de yonpo
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2010
    Messages
    617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 617
    Par défaut
    Résolu alors?

    Sinon, j'ai oublié de préciser ce que faisait ce bout de code: chaque valeurs de cellules sont comparées et ainsi un ordre de tri est définit.

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

Discussions similaires

  1. Tri multi-threadé
    Par Tifauv' dans le forum C
    Réponses: 8
    Dernier message: 28/06/2007, 09h00
  2. tri de liste chainée
    Par RezzA dans le forum C
    Réponses: 7
    Dernier message: 26/01/2003, 20h25
  3. Tri par fusion d'un tableau
    Par Mailgifson dans le forum C
    Réponses: 5
    Dernier message: 12/12/2002, 14h53
  4. [VBA-E] [Excel] Tri automatique
    Par bovi dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/10/2002, 10h19
  5. [] Tri d'un tableau par ordre alphabétique
    Par cafeine dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 17/09/2002, 08h43

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