Chargement DataGridView depuis le Module

Messages postés
19
Date d'inscription
dimanche 12 août 2018
Dernière intervention
1 novembre 2018
- 30 oct. 2018 à 18:24 - Dernière réponse :  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
Afficher la suite 

Votre réponse

7 réponses

Messages postés
1702
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
15 novembre 2018
- 30 oct. 2018 à 19:06
0
Merci
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
Commenter la réponse de vb95
Messages postés
19
Date d'inscription
dimanche 12 août 2018
Dernière intervention
1 novembre 2018
- Modifié par yassin246 le 30/10/2018 à 20:36
0
Merci
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
Commenter la réponse de yassin246
Messages postés
12255
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 novembre 2018
- 31 oct. 2018 à 11:08
0
Merci
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é
Commenter la réponse de Whismeril
Messages postés
19
Date d'inscription
dimanche 12 août 2018
Dernière intervention
1 novembre 2018
- 1 nov. 2018 à 13:19
0
Merci
Comment faire obligé l’exécution de la valeur de "Colonne" dans le code
colonne="champ1, champ2, champ3, champ4"
maform.DGV.Rows.Add(colonne)
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
Messages postés
19
Date d'inscription
dimanche 12 août 2018
Dernière intervention
1 novembre 2018
- 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.
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)
Commenter la réponse de yassin246

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.