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

Signaler
Messages postés
548
Date d'inscription
mercredi 28 juillet 2004
Statut
Membre
Dernière intervention
11 septembre 2013
-
Messages postés
8
Date d'inscription
vendredi 15 juillet 2016
Statut
Membre
Dernière intervention
15 août 2016
-
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.

4 réponses

Messages postés
420
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
15 juillet 2014
6
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) 
Messages postés
420
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
15 juillet 2014
6
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
Messages postés
548
Date d'inscription
mercredi 28 juillet 2004
Statut
Membre
Dernière intervention
11 septembre 2013
2
Excellent.

Merci beaucoup une nouvelle fois.
Messages postés
8
Date d'inscription
vendredi 15 juillet 2016
Statut
Membre
Dernière intervention
15 août 2016

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