Chargement DataGridView depuis le Module

yassin246 Messages postés 20 Date d'inscription dimanche 12 août 2018 Statut Membre Dernière intervention 12 novembre 2020 - Modifié le 30 oct. 2018 à 18:48
 Yoda - 1 nov. 2018 à 21:49
Bonjour, tout le monde
j'ai essayé de crée une procédure pour remplir n'import quelle DataGridView quelque soit le nombre de champ d'une requête et j'ai fais comme suit :
Public Sub RemplirDGV(ByVal maform As String, ByVal req As String, ByVal DGV As DataGridView)
        cmd = New OleDbCommand(req, con)
        dr = cmd.ExecuteReader(CommandBehavior.CloseConnection)
        '--------Vider Mon DataGridView ---------
        maform.DGV.Rows.Clear()
        '--------Création Combinaison dr(0), dr(1), dr(2), dr(3), dr(....), dr(....)---------
        Dim colonne As String = ""
        Dim i As Integer = 0
        Do While i < maform.DGV.ColumnCount
            If i < maform.DGV.ColumnCount - 1 Then
                colonne = colonne + "dr(" & i & "), "
            Else
                colonne = colonne + "dr(" & i & ")"
            End If
            i = i + 1
        Loop
        '--------Remplir Mon DataGridView ---------
        Do While dr.Read = True
           maform.DGV.Rows.Add(colonne)
        Loop
End Sub

Mon but est de combiné colonne pour l'utilisé dans le Module au lieu d'utilisé :
maform.DGV.Rows.Add(dr(0), dr(1), dr(2), dr(3), dr(4), dr(5), dr(6), dr(7), dr(8)) dans chaque DataGridView.
comme ça je peux remplir mon DataGridView quelque soit le nombre de colonnes
MON PROBLÈME
lors d’exécution du form les lignes de mon DataGridView sont crées mais vides
NB:
- Les colonnes de mon DataGridView sont crées par moi même
A voir également:

4 réponses

vb95 Messages postés 3418 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 31 mai 2023 165
30 oct. 2018 à 19:06
Bonjour !
A mon avis il faut "binder" ta DataGridView
voir ici : https://codes-sources.commentcamarche.net/faq/1291-utilisation-du-binding-au-travers-de-l-objet-databindingsource
Ainsi tu n'auras même plus à la remplir ligne par ligne : la DataGridView se remplira d'un seul coup selon la Source que tu lui indiqueras !
Je n'ai jamais essayé cette technique par contre
0
yassin246 Messages postés 20 Date d'inscription dimanche 12 août 2018 Statut Membre Dernière intervention 12 novembre 2020
Modifié le 30 oct. 2018 à 20:36
merci mon ami pour ta réponse
pour mois je me sens très alaise de remplir ligne par ligne.
dans ma procédure je pense que j'ai un seul problème c'est "Colonne"
comment faire obligé l’exécution de la valeur de "Colonne" dans
maform.DGV.Rows.Add(colonne)
au lieu d'ecrire pour chaque DataGridView le code
DataGridView.Rows.Add(dr1(0), dr1(1), dr1(2), dr1(3), dr1(4), dr1(5), dr1(6), dr1(7), dr1(8))

cette procédure est plus utile et plus rapide en cas ou t'a plusieurs forms dotés des datagridview
0
Whismeril Messages postés 18416 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 1 juin 2023 624
31 oct. 2018 à 11:08
Bonjour
cette procédure est plus utile et plus rapide en cas ou t'a plusieurs forms dotés des datagridview

Non le binding est plus rapide que de faire ligne par ligne.
Le tutoriel que t’as proposé Vb, que je salue au passage, montre comment personnaliser le binding par l’objet bindingsource.
Mais si tu veux juste afficher par defaut, alors
Datagridview.Datasource = dr
et le tour est joué
0
yassin246 Messages postés 20 Date d'inscription dimanche 12 août 2018 Statut Membre Dernière intervention 12 novembre 2020
1 nov. 2018 à 13:19
Comment faire obligé l’exécution de la valeur de "Colonne" dans le code
colonne="champ1, champ2, champ3, champ4"
maform.DGV.Rows.Add(colonne)
0
Voila comment faire
'ajouter une ligne vide
maform.DGV.Rows.Add()
'recuperer l'index de cette ligne
dim iRow as integer = maform.DGV.RowsCount - 1
'renseigner chaque cellule dans une boucle
for iCol = 0 to 8
     maform.DGV(iCol,iRow).Value=dr(iCol)
next
0
yassin246 Messages postés 20 Date d'inscription dimanche 12 août 2018 Statut Membre Dernière intervention 12 novembre 2020
1 nov. 2018 à 17:52
merci c'est fait et ça marche trèssssss biennnnnnn.
mais comme même j'aimerai bien savoir comment utilisé le contenu et la valeur d'une variable dans une commande comme j'ai précisé dans mon exemple pour pouvoir l’utilisé dans autres cas différentes au remplissage d'un datagridview.
0
colonne="champ1, champ2, champ3, champ4"
maform.DGV.Rows.Add(colonne)

Cette syntaxe ne convient pas pour la méthode .Add()
A la rigueur tu pourrait écrire
Dim champ1, champ2, champ3, champ4 as string
champ1="toto"
champ2="titi"
champ3="tata"
champ4="tutu"
maform.DGV.Rows.Add(champ1, champ2, champ3, champ4)
0