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 :

DataGridView - Format date, tri date [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Sans
    Inscrit en
    Novembre 2015
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Novembre 2015
    Messages : 92
    Par défaut DataGridView - Format date, tri date
    Bonjour,

    Ce sujet a déjà été traité dans ce forum et dans d'autres mais je n'y ai pas trouvé ce que je cherche, je me permets donc d'ouvrir une nouvelle discussion.

    J'ai un DataGridView crée dynamiquement par code, lié à un DataTable.
    Une colonne DateTime dans le Datatable :
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim colDTV As New DataColumn("DateTimeCol")
            With colDTV
                .ColumnName = "Date trouvée"
            End With
            DTListeCistes.Columns.Add(colDTV)

    Dans le code qui alimente le DataTable j'ai ecrit :
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            Dim jj, mm, aaaa As String
            Dim wdate As Date
            jj = Mid(DtTrouv, 1, 2) : mm = Mid(DtTrouv, 4, 2) : aaaa = Mid(DtTrouv, 7, 4)
            If DtTrouv = "0" Then wdate = New DateTime(0) Else wdate = New DateTime(CInt(aaaa), CInt(mm), CInt(jj))
            Ligne(5) = wdate

    DtTrouv est un string qui vaut soit "0" soit une date de la forme "jj/mm/aaaa"
    Ligne est du type DataRow provenant de la DataTable


    Résultat
    la date dans ma colonne DGV apparait
    01/01/0001 00:00:00 si DtTrouv = "0" et
    02/05/2020 00:00:00 si DtTrouv="02/05/2020"

    Mes questions :
    1. J'ai bien une colonne type DateTime mais si je click en haut de la colonne pour trier, j'obtiens un tri String !! pas un tri date.
    2. Comment appliquer un format sur la colonne du DGV, je voudrais jj/mm/aaaa avec un tri date.

    Merci.

  2. #2
    Membre confirmé
    Homme Profil pro
    Sans
    Inscrit en
    Novembre 2015
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Novembre 2015
    Messages : 92
    Par défaut
    Bonjour,

    J'ai fait de nombreux essais.
    Je dois dire que je suis assez confus.

    Je reprécise ma demande.
    J'ai une colonne date affichée au format jj/mm/aaaa que je veux trier.

    Comme je n'arrive à rien en créant la colonne en DateTimeCol, j'ai modifié le format de la colonne pour la mettre en StringCol, et j'ai indiqué que le tri de la colonne est Programmatic.
    DGVListeCistes.Columns(àDTV.Ordinal).SortMode = DataGridViewColumnSortMode.Programmatic.
    J'ai codé la date en format aaaa/mm/jj pour que le tri ai un sens.

    Dans la fonction appelé par l'Event ColumnHeaderMouseClick je me suis contenté de faire un tri Ascendant. Ça marche.
    Mais si je demande un tri Descendant, ça plante disant que la valeur 2 pour Direction est invalide (2=Descendant).

    J'ai tourné cela dans tous les sens, sans parvenir à faire un tri descendant.
    Comment expliquer cela ?

    Mon but étant de présenter la date au format jj/mm/aaaa et dans l'appel de la fonction appelé par l'Event
    - transformer la date en aaaa/mm/jj
    - trier sur la colonne date
    - remettre au format initial

    J'espère que quelqu'un a une solution à ce casse-tête.
    Merci de votre aide.

  3. #3
    Membre confirmé
    Homme Profil pro
    Sans
    Inscrit en
    Novembre 2015
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Novembre 2015
    Messages : 92
    Par défaut
    Bonsoir,

    J'ai enfin trouvé mon erreur.
    Il ne suffit pas de déclarer la colonne en "DateTimeCol" il faut aussi et surtout déclarer le type de data en DateTime.

    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            Dim colDTV As New DataColumn("DateTimeCol")
            With colDTV
                .DataType = System.Type.GetType("System.DateTime")
                .ColumnName = àDTV.Entete
            End With
            Dt.Columns.Add(colDTV)

    Heureusement que je fais cela pour le plaisir
    J'espère que ce post pourra servir à d'autres.

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

Discussions similaires

  1. [XL-2007] Regroupement, format et tri date dans combobox
    Par cathodique dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 06/11/2013, 18h29
  2. Tri d'un dataGridView par date
    Par ensinienne dans le forum C#
    Réponses: 2
    Dernier message: 13/01/2013, 20h35
  3. Datagridview colonne au format date
    Par Timtom60 dans le forum VB.NET
    Réponses: 9
    Dernier message: 19/05/2010, 16h45
  4. [MySQL] Tri sur champ au format date - uniquement mois/année
    Par skippy86 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 04/01/2007, 11h27

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