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 :

lier le contenu d une liste a un Datagridview


Sujet :

VB.NET

  1. #1
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 342
    Points : 107
    Points
    107
    Par défaut lier le contenu d une liste a un Datagridview
    Salut,

    voila mon probleme. Je n arrive pas a afficher dans un datagridview, le contenu d une list.
    J arrive a afficher le contenu d un dataset qui est le resultat d une procedure de base de donné, mais pas d une simple list que je cré a la main ...

    Par exemple, si j ai une classe catchment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Class catchment
        Public c1 As Integer
        Public c2 As Double
        Public c3 As Double
     
        Sub New()
        End Sub
    End Class
    et une form

    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
    Public Class Form1
        Public catchlist As New List(Of catchment)
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim catch1 As New catchment
            Dim catch2 As New catchment
            catch1.c1 = 11
            catch1.c2 = 12
            catch1.c3 = 13
            catchlist.Add(catch1)
            catch2.c1 = 21
            catch2.c2 = 22
            catch2.c3 = 23
            catchlist.Add(catch2)
        End Sub
    End Class
    et que je glisse un objet Datagridview sur ma forme. Comment faire pour que le contenu de catchlist soit visible dans cette gridview ?

    J aurais pensé que je devais passer par ajouter une nouvelle source de donnée de type objet correspondant a catchlist, puis lier via form1[design] le datasource de la datagridview a cette nouvelle datasource. Mais le probleme est que je ne vois pas ma liste dans les choix que propose ajouter un datasource de type objet ...

    Arf, suis pas sur d etre clair ...

    Merci

  2. #2
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 776
    Points
    1 776
    Par défaut
    Bonjour.

    Pourquoi ne le fais-tu pas directement par code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim catch1 As New catchment
    ...
            catchlist.Add(catch2)
            tondatagridview.datasource = catchlist
        End Sub
    Cdt.
    Bon à savoir : la touche F1 ne sert pas à commander des places pour le grand prix de Belgique.

  3. #3
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 342
    Points : 107
    Points
    107
    Par défaut
    Salut et merci de m aider

    Effectivement c une des premieres choses que j ai essayé de faire, mais comme tu peux le voir la : http://img259.imageshack.us/img259/4072/screenqm7.jpg

    Bah ca marche po. Quand j appuie sur le bouton j ai tjs un datagridview vide.

    Merci

    Slumpy

  4. #4
    Membre régulier
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 77
    Points : 89
    Points
    89
    Par défaut
    avant de lier des données a ton dgv,

    lui as tu créé des colonnes?

    --> via le mode design, clic sur la balise active du dgv puis ajouter/modifier des colonnes

    parce que sur ton screen, il est completement vide, sans entetes de colonnes...

  5. #5
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 342
    Points : 107
    Points
    107
    Par défaut
    Salut,

    non sur le screen j en avais pas mis. Je pensais que ca se créerait automatiquement lors de l execution. Mais meme si je crée c colonnes. Elles restent vide.

    Suis perdu la ...

    Slumpy

  6. #6
    Membre régulier
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 77
    Points : 89
    Points
    89
    Par défaut
    est ce que tu as rempli la propriété "DataPropertyName" de chaque colonne en lui mettant de le nom du champ de ta source de données ?

    EDIT: dans ton cas il faudrait y mettre "c1", "c2", et "c3", les propriétés de ton objet catchment.

  7. #7
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 342
    Points : 107
    Points
    107
    Par défaut
    Salut robri,

    merci de m aider

    Si je comprend bien, tu me dis de faire ca :

    Mais visiblement ca ne marche tjs po :



    Merci

    Slumpy

  8. #8
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Tu peux utiliser un BindingSource. Tu ajoutes un bindingsource sur ton formulaire. Tu affectes le datasource du bindingsource à un objet de type catchment (tu peux le faire par l'assistant ajout de source de données).

    Ensuite, tu utilises le bindingsource comme datasource du datagridview (toujours en mode design). Il devrait alors générer les colonnes du datagridview.

    Dans le code maintenant, au lieu de modifier le datasource du gridview, tu modifies celui du bindingsource.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monBindingSource.DataSource = maListeDeCatchment
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  9. #9
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 342
    Points : 107
    Points
    107
    Par défaut
    Salut,

    Si j ai bien compris, tu me dis de creer le bindingsource et d y ajouter comme datasource comme ca : http://www.tes-images.com/view.php?i...dingsource.JPG

    De selectionner le datasource du datagridview comme ca : http://www.tes-images.com/view.php?i...cedatagrid.JPG

    Et de changer ma Form par :

    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
    Public Class Form1
        Public catchlist As New List(Of catchment)
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim catch1 As New catchment
            Dim catch2 As New catchment
            catch1.c1 = 11
            catch1.c2 = 12
            catch1.c3 = 13
            catchlist.Add(catch1)
            catch2.c1 = 21
            catch2.c2 = 22
            catch2.c3 = 23
            catchlist.Add(catch2)
     
            BindingSource1.DataSource = catchlist
     
        End Sub
    End Class
    Si je fais tourner ca, j ai ca : http://www.tes-images.com/view.php?i...77_result2.JPG

    Dinc ca marche tjs po

    Par contre, on dirait qu il reconnait que j ai 2 catchment dans ma list.

    Merci.

    Slumpy

    EDIT : Je me demande si le probleme ne vient pas du fait que quand j ajoute ma source de donnée par l assistant, je choisis Catchment. Ca ne devrait pas plutot etre catchlist ?
    Si c le cas, le pb est que je ne le vois pas dans les choix : http://www.tes-images.com/view.php?i...datasource.JPG

  10. #10
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 342
    Points : 107
    Points
    107
    Par défaut
    Salut,

    J ai finalement trouvé comment faire.

    Je ne sais pas trop pourquoi, mais si je defini c1, c2 et c3 comme private et que je definit trois propriety pour acceder a c varibles ... ben ca marche :p

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Public Class Catchment
        Private m_c1 As Integer
        Private m_c2 As Double
        Private m_c3 As Double
     
     
        Sub New()
        End Sub
        Public Property c1() As Integer
            'set and get pipe diameter (in mm)
            Get
                Return m_c1
            End Get
            Set(ByVal value As Integer)
                m_c1 = value
            End Set
        End Property
        Public Property c2() As Double
            'set and get pipe diameter (in mm)
            Get
                Return m_c2
            End Get
            Set(ByVal value As Double)
                m_c2 = value
            End Set
        End Property
        Public Property c3() As Double
            'set and get pipe diameter (in mm)
            Get
                Return m_c3
            End Get
            Set(ByVal value As Double)
                m_c3 = value
            End Set
        End Property
    End Class

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

Discussions similaires

  1. afficher les contenu d'une liste dynamiquement
    Par mzt.insat dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/04/2006, 18h02
  2. Contenu d'une liste déroulante
    Par tets88 dans le forum Access
    Réponses: 3
    Dernier message: 20/03/2006, 11h37
  3. [debutant] recupérer contenu d'une liste
    Par Silvia12 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 21/01/2006, 18h41
  4. [Upload] Modifier le contenu d'une liste box automatiquemen
    Par Phenomenium dans le forum Langage
    Réponses: 7
    Dernier message: 16/01/2006, 21h42
  5. contenu d'une liste deroulante
    Par djtoph dans le forum IHM
    Réponses: 11
    Dernier message: 13/06/2005, 16h53

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