Copier une ligne datagridview dans un autre

Résolu
vercomax Messages postés 547 Date d'inscription mercredi 28 juillet 2004 Statut Membre Dernière intervention 11 septembre 2013 - 10 janv. 2013 à 10:27
psofie Messages postés 7 Date d'inscription vendredi 15 juillet 2016 Statut Membre 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.

4 réponses

foliv57 Messages postés 420 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 15 juillet 2014 9
10 janv. 2013 à 13:29
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) 
1
foliv57 Messages postés 420 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 15 juillet 2014 9
10 janv. 2013 à 13:37
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
0
vercomax Messages postés 547 Date d'inscription mercredi 28 juillet 2004 Statut Membre Dernière intervention 11 septembre 2013 2
10 janv. 2013 à 14:09
Excellent.

Merci beaucoup une nouvelle fois.
0
psofie Messages postés 7 Date d'inscription vendredi 15 juillet 2016 Statut Membre Dernière intervention 15 août 2016
4 août 2016 à 20:56
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
0
Rejoignez-nous