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 :

DataGridView tri colonne numérique


Sujet :

Windows Forms

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 62
    Points : 25
    Points
    25
    Par défaut DataGridView tri colonne numérique
    Bonjour,
    Cherchant désespérément la réponse, je me permets de me tourner vers vous.
    Après le chargement d'un DataGridView, je veux simplement trier une colonne qui a uniquement des données numériques.
    Or, par défaut, on ne peut définir qu'une colonne de type "textbox" et lors du tri, il y a un tri alphanumerique :
    Par ex :

    1
    9
    10
    2

    est trié

    1
    10
    2
    9

    Mais comment avoir un tri numérique ?

    1
    2
    9
    10

    Merci d'avance

    Guillaume

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Or, par défaut, on ne peut définir qu'une colonne de type "textbox" et lors du tri, il y a un tri alphanumerique :
    En "bindant" la DataGridView à un DataSet (ou une collection), les colonnes du DGV seront de type TextBox tant pour des colonnes du DataSet (ou pour les propriétés des items de la collection) de type int ou les DateTime). Toutefois, ces colonnes seront triées en fonction du type de la colonne du DataSet (ou de la propriété de l'item).
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 62
    Points : 25
    Points
    25
    Par défaut
    Merci.

    J'essaye de faire ainsi.
    Par contre, j'ai crée une fonction pour créer le dataset lié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
        Public Function GetCsvData(ByVal strFolderPath As String, ByVal strFileName As String) As DataTable
     
            Dim strConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFolderPath & ";Extended Properties=""text;HDR=Yes;FMT=Delimited"";"
     
     
            Dim conn As New OleDbConnection(strConnString)
     
            Try
                conn.Open()
                Dim cmd As New OleDbCommand("SELECT * FROM [" & strFileName & "]", conn)
                Dim da As New OleDbDataAdapter()
     
                da.SelectCommand = cmd
     
                Dim ds As New DataSet()
     
                da.Fill(ds)
                da.Dispose()
     
                Return ds.Tables(0)
            Catch
                Return Nothing
            Finally
                conn.Close()
            End Try
     
        End Function
    Mais à l’exécution, il ne prend pas en compte le délimiteur ";"....

    Merci encore de votre aide

    Guillaume

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 62
    Points : 25
    Points
    25
    Par défaut
    il prend la virgule(,) comme séparateur et non pas le point virgule ( malgré la chaine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim strConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFolderPath & ";Extended Properties=""text;HDR=YES;FMT=Delimited(;)"""
    Merci d'avance de votre aide

  5. #5
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Dans le cas particulier d'un DataSet lu à partir d'un fichier texte, on peut :
    • ajouter une colonne "xxxInt" de type int dans la DataTable,
    • transférer dans "xxxInt" les entiers déduits de la colonne "xxxTexte" (string représentant des entiers lue lors du Fill du DataSet)
    • supprimer la colonne "xxxTexte" de la dataTable.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 62
    Points : 25
    Points
    25
    Par défaut
    Merci j'ai trouvé :

    il faut placer un fichier schema.ini sous le même répertoire que le fichier .csv.

    le contenu de ce fichier doit etre :

    [nom du fichier.csv]
    Format=Delimited(


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

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/11/2012, 09h05
  2. DataGridView Tri avec colonnes DataPropertyName
    Par ppphil dans le forum Windows Forms
    Réponses: 9
    Dernier message: 27/07/2010, 12h11
  3. Tri colonne ajoutée à un DataGridView
    Par amirad dans le forum VB.NET
    Réponses: 9
    Dernier message: 15/10/2009, 11h45
  4. Désactivation Tri colonne Datagridview
    Par jeepibmx dans le forum VB.NET
    Réponses: 4
    Dernier message: 17/04/2008, 14h23
  5. Réponses: 5
    Dernier message: 09/05/2006, 13h27

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