Copier une ligne datagridview dans un autre [Résolu]

Messages postés
548
Date d'inscription
mercredi 28 juillet 2004
Dernière intervention
11 septembre 2013
- - Dernière réponse : psofie
Messages postés
8
Date d'inscription
vendredi 15 juillet 2016
Dernière intervention
15 août 2016
- 4 août 2016 à 20:56
Bonjour,

Dim ligne As DataGridViewRow
ligne = DGV1.Rows(x)
DGV2.Rows.Add(ligne)

provoque l'erreur:
La ligne fournie appartient déjà à un contrôle DataGridView.

Pourquoi ?
le DGV1 possède un datasource mais pas le DGV2

En d'autre terme comment copier une ligne d'un DGV et l'ajouter dans une autre DGV ?

Merci.
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
423
Date d'inscription
vendredi 17 novembre 2006
Dernière intervention
15 juillet 2014
1
Merci
Bonjour,

Une instance de DataGridViewRow ne peut appartenir qu'à un seul DataGridView.

Pour copier la ligne il faudra la cloner (ce qui créera une copie mais dans une nouvelle instance qui elle pourra être associée à un autre DataGridView).

Dans l'exemple que je vous ai fourni hier, il y a la fonction CloneWithValue qui vous permettra de faire une copie.

Public Module Extensions
  
    <System.Runtime.CompilerServices.Extension()> _
    Public Function CloneWithValues(ByVal row As DataGridViewRow) As DataGridViewRow

        'Clone la ligne d'origine
        Dim newRow As DataGridViewRow = CType(row.Clone(), DataGridViewRow)

        'Copie les valeurs
        For index As Integer = 0 To row.Cells.Count - 1
            newRow.Cells(index).Value = row.Cells(index).Value
        Next

        Return newRow
    End Function

End Module


Utilisation :
Dim ligne As DataGridViewRow = DGV1.Rows(x).CloneWithValues()
DGV2.Rows.Add(ligne) 

Merci foliv57 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de foliv57
Messages postés
423
Date d'inscription
vendredi 17 novembre 2006
Dernière intervention
15 juillet 2014
0
Merci
Et juste à titre d'exemple, pour réutiliser une DataGridViewRow dans un autre DataGridView (donc déplacer la ligne et non la copier), dans ce cas on peut faire
Dim ligne As DataGridViewRow 
ligne = DGV1.Rows(x) 
DGV1.Rows.Remove(ligne)
DGV2.Rows.Add(ligne)


La ligne est supprimée de DGV1 et ajouté à DGV2
Commenter la réponse de foliv57
Messages postés
548
Date d'inscription
mercredi 28 juillet 2004
Dernière intervention
11 septembre 2013
0
Merci
Excellent.

Merci beaucoup une nouvelle fois.
Commenter la réponse de vercomax
Messages postés
8
Date d'inscription
vendredi 15 juillet 2016
Dernière intervention
15 août 2016
0
Merci
bonsoir,
svp comment je peux copier sur un gridview juste quelque cellule de la ligne sélectionné sur un autre gridview
toujours en vb.net
Commenter la réponse de psofie

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.