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 par ordre croissant dans une listview


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut Tri par ordre croissant dans une listview
    Bonjour à tous,

    Mon programme tourne bien maintenant mais j'ai un petit souci pour le tri dans m'a listview avec plusieurs colonnes.

    Les colonnes sont:
    L'identifiant = un nom
    L'index = un chiffre
    Une date de début du fichier = un format date et heure
    Une date de fin du fichier = un format date et heure

    Pour le tri sur les nom pas de souci, pour les dates non plus après avoir formaté en format japonais.
    Il me reste l'index. Cela marche bien mais le tri se fait sous la forme:
    1
    10
    11
    12
    2
    20
    21
    3

    etc...

    Et j'aimerais que le tri soit plus logique en:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    etc...

    Merci

  2. #2
    Membre émérite Avatar de methylene
    Profil pro
    Inscrit en
    Février 2010
    Messages
    659
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 659
    Par défaut
    Au lieu d'avoir comme index les chiffres "1, 2, 3, 4, 5, 6, 7, 8, 9", met un "0" devant, genre "01, 02, 03, 04, 05, 06, 07, 08, 09", et si tu ne veux pas que cela t'affiche le "0" lies alors tes index à une clé et tu fais le tri sur cette clé.

    1 --> 01
    2 --> 02
    3 --> 03
    ...
    ...
    ...
    10 --> 10

    etc ...

  3. #3
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut
    Citation Envoyé par methylene Voir le message
    Au lieu d'avoir comme index les chiffres "1, 2, 3, 4, 5, 6, 7, 8, 9", met un "0" devant, genre "01, 02, 03, 04, 05, 06, 07, 08, 09", et si tu ne veux pas que cela t'affiche le "0" lies alors tes index à une clé et tu fais le tri sur cette clé.

    1 --> 01
    2 --> 02
    3 --> 03
    ...
    ...
    ...
    10 --> 10

    etc ...
    J'avais bien pensé à faire ça, mais il se peut que j'aille à plus de 1000 index avec le temps, donc il faudrait mettre 0001 voir plus, ce n'est pas très esthétique. Il n'y a pas d'autre moyen ?

  4. #4
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Et bien il y a cette solution qui est viable.

    Sinon, avec un peu de recherche google tu aurais vu que déjà discuter sur ce même forum, et qu'il faut faire ton propre tri:

    http://www.developpez.net/forums/d18...-listview-int/

  5. #5
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut
    Citation Envoyé par mactwist69 Voir le message
    Et bien il y a cette solution qui est viable.

    Sinon, avec un peu de recherche google tu aurais vu que déjà discuter sur ce même forum, et qu'il faut faire ton propre tri:

    http://www.developpez.net/forums/d18...-listview-int/
    Merci pour le lien, je n'était pas tomber dessus dans google.

    Quand à Val cela marche pas non plus.

    Je vais essayer le code du lien

  6. #6
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut
    Après quelques modifications pas bien méchante du code énoncé plus haut pour faire mon tri, cela marche impeccable.

    par contre j'ai un petit souci dans la gestion de l'évènement de visual:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     Private Sub ListView1_ColumnClick(ByVal sender As System.Object, _
                        ByVal e As System.Windows.Forms.ColumnClickEventArgs)                                       Handles ListView1.ColumnClick   
     
            If Me.ListView1.Sorting = SortOrder.Ascending Then
                Me.ListView1.Sorting = SortOrder.Descending
            Else
                Me.ListView1.Sorting = SortOrder.Ascending
            End If
            Me.ListView1.ListViewItemSorter = New ListViewItemComparer(e.Column, Me.ListView1.Sorting)
    End Sub
    Mon souci c'est que lorsque je clique sur l'une des colonnes il me fait plusieurs fois l'évènement et de quantité aléatoire. Du coup je n'alterne pas forcement le sens du tri.

    J'ai essayé de mettre en commentaire le "Handles ListView1.ColumnClick" de la déclaration, et la cela marche nickel mais parfois Visual me crée un nouveau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub ListView1_ColumnClick(ByVal sender As System.Object, _
       ByVal e As System.Windows.Forms.ColumnClickEventArgs) Handles ListView1.ColumnClick                                   
     
    End Sub
    Avec rien dedans donc erreur puisque la méthode est double.

    Avez vous une explication a ce phénomène de redondance et comment y remédier?

  7. #7
    Membre confirmé Avatar de simotaqi
    Inscrit en
    Février 2010
    Messages
    144
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 144
    Par défaut
    Essaie d'abord d'utiliser Val pour les Num pour trier leur valeur non leur string ^^

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

Discussions similaires

  1. Tri par ordre croissant dans des TextBox
    Par neoph dans le forum VB.NET
    Réponses: 6
    Dernier message: 01/12/2012, 18h31
  2. Tri par ordre croissant dans variable tableau
    Par jojo86 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 27/11/2009, 16h51
  3. Insertion dans un fichier trié par ordre croissant
    Par darkterreur dans le forum Langage
    Réponses: 14
    Dernier message: 20/09/2009, 19h39
  4. Tri par ordre croissant
    Par KinF dans le forum Algorithmes et structures de données
    Réponses: 18
    Dernier message: 13/12/2008, 20h19

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