none
Comment remplir une colonne non liée d'un datagridview. RRS feed

  • Question

  • Bonjour;

    Voila, j'ai 2 tables T1 et T2. T1 est la table parent et T2 la table enfant. Une datarelation a été définie entre les deux tables en utilisant Colonne 1 de T1 et Colonne 1 de T2.

    Un datagridview affiche la table enfant T2 et une colonne non liée (unbound textcolumn). Le problème est d'afficher dans le datagridview les valeurs d'une colonne 2 de T1.

    Un petit exemple

    T1 (table client)                      T2   (Table des commandes)                                   Resultat Desire (Datagridview)

    Client num  Nom                     Client_num          Date                   Montant            Nom            Date                 Montant 

    1                Jean                              3                01/01/17             1050.                Marie          01/01/17            1050.00        

    2                Albert                            1                05/01/17             2546.00             Jean           05/01/17            2546.00

    3                 Marie                           3                 16/04/17            3221.00              Marie         16/04/17            3221.00 

    Comment Faire? Merci.                          

    mercredi 3 mai 2017 18:04

Réponses



  • Pour remplir le DataGridView depuis un DataRelation vous pouvez faire comme ceci

    avec ce code:

    Private leDataSet As DataSet
    
        Private table1 As DataTable
        Private table2 As DataTable
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            ' Création d'un dataset contenant 2 tables
    
            ' Création Table1
            table1 = New DataTable("clients")
            table1.Columns.Add("num")
            table1.Columns.Add("nom")
            table1.Columns.Add("montant")
            ' Remplir table1
            table1.Rows.Add(1, "Jean", 1050)
            table1.Rows.Add(2, "Albert", 2546)
            table1.Rows.Add(3, "Marie", 3221)
    
            ' Création Table2
            table2 = New DataTable("commandes")
            table2.Columns.Add("num")
            table2.Columns.Add("date")
            table2.Columns.Add("montant")
            ' Remplir table2
            table2.Rows.Add(3, "01/01/2017", 1050)
            table2.Rows.Add(1, "05/01/2017", 2546)
            table2.Rows.Add(3, "16/04/2017", 3221)
    
            ' Affichage dans les DGV
            DataGridView1.DataSource = table1
            DataGridView2.DataSource = table2
    
            ' Configuration du DGV3 pour avoir 2 colonnes: Nom et DateDeCommande
            Dim cl1 As New DataGridViewTextBoxColumn
            With cl1
                .HeaderText = "Nom"
                .Name = "Nom"
                .Width = DataGridView3.Width / 2
                .ReadOnly = True
            End With
            Dim cl2 As New DataGridViewTextBoxColumn
            With cl2
                .HeaderText = "Date Commande"
                .Name = "Date"
                .Width = DataGridView3.Width / 2
                .ReadOnly = True
            End With
            DataGridView3.Columns.Insert(0, cl1)
            DataGridView3.Columns.Insert(1, cl2)
            DataGridView3.RowHeadersVisible = False
    
            ' Création du DataSet
            Dim customerOrders As DataSet = New DataSet("Business")
            customerOrders.Tables.Add(table1)
            customerOrders.Tables.Add(table2)
    
            ' Création de la Relation
            Dim customerOrdersRelation As DataRelation = customerOrders.Relations.Add("LesCommandes",
                                                                                      customerOrders.Tables("clients").Columns("num"),
                                                                                      customerOrders.Tables("commandes").Columns("num"))
            ' Utilisation de la relation pour afficher dans le DGV3
            Dim custRow, orderRow As DataRow
    
            For Each custRow In customerOrders.Tables("clients").Rows
                For Each orderRow In custRow.GetChildRows(customerOrdersRelation)
                     DataGridView3.Rows.Add(custRow("nom").ToString(), orderRow("date").ToString())
                Next
            Next
        End Sub
    Ensuite vous pouvez trier par date de commande... mais cela ne concerne que le DGV3.



    jeudi 4 mai 2017 12:32