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

vercomax 548 Messages postés mercredi 28 juillet 2004Date d'inscription 11 septembre 2013 Dernière intervention - 10 janv. 2013 à 10:27 - Dernière réponse : psofie 8 Messages postés vendredi 15 juillet 2016Date d'inscription 15 août 2016 Dernière intervention
- 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 

4 réponses

Répondre au sujet
foliv57 423 Messages postés vendredi 17 novembre 2006Date d'inscription 15 juillet 2014 Dernière intervention - 10 janv. 2013 à 13:29
+3
Utile
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) 
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de foliv57
foliv57 423 Messages postés vendredi 17 novembre 2006Date d'inscription 15 juillet 2014 Dernière intervention - 10 janv. 2013 à 13:37
0
Utile
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
vercomax 548 Messages postés mercredi 28 juillet 2004Date d'inscription 11 septembre 2013 Dernière intervention - 10 janv. 2013 à 14:09
0
Utile
Excellent.

Merci beaucoup une nouvelle fois.
Commenter la réponse de vercomax
psofie 8 Messages postés vendredi 15 juillet 2016Date d'inscription 15 août 2016 Dernière intervention - 4 août 2016 à 20:56
0
Utile
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.