IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Copier/ coller d'une Row d'un Datagriview 2 dans Datagridview 1


Sujet :

VB.NET

  1. #1
    Membre du Club
    Homme Profil pro
    developpeur
    Inscrit en
    Décembre 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : developpeur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2011
    Messages : 141
    Points : 60
    Points
    60
    Par défaut Copier/ coller d'une Row d'un Datagriview 2 dans Datagridview 1
    Re bonjour,


    Après beaucoup de recherche sur le internet (notamment sur des forums américains) j'essay en vain de copier coller une ligne d'un Datagridview 2 dans un autre datagridview 1 par l'évènement du DoubleClick.

    Les seuls bout d'exemples que j'ai trouvé mais que je n'ai pas réussi à appliqué sont sur cette page :

    http://www.xtremevbtalk.com/showthread.php?t=188245

    A priori cela serai possible par une fonction "Clone"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    'This is where I Add the DataTable to the DataSet
    objDataSet1.Tables.Add(objDataTable1)
     
    'This is where I set the Datasource of the Datagrid to be populated
    dgCarList1.DataSource = objDataSet1.Tables(0) 
     
    'This is where I copy a row from one datagrid's datasource to the new datasource
    objDataTable1.ImportRow(objDataTable.Rows(intSelectedRow))
    "Nevermind I finally solved it. Here's what I did:

    objDataTable1 = objDataTable.Clone

    That got me the columns I needed for the new Table. After that, the importrow did it's thing and the new row showed up in the new datagrid!

    Now I have a lot of formatting to take care of, but at least the data is there!

    MKoslof, thanks for the time attention you gave to this thread, I appreciate that."


    Je précise que mes 2 DGV sont bindés ducoup je me demande si cela est possible ou non ??

    Avez-vous déjà réussi à faire cette manip ??

  2. #2
    Membre éprouvé
    Avatar de dkmix
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    619
    Détails du profil
    Informations personnelles :
    Localisation : Jamaïque

    Informations forums :
    Inscription : Septembre 2007
    Messages : 619
    Points : 924
    Points
    924
    Par défaut
    Jeremy,

    Un bout de code qui peut aider :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Private Sub Form1_Load(sender As Object, e As EventArgs)
     
    	For Each cOrigine As DataGridViewColumn In dataGridViewOrigine.Columns
    		Dim cDestination As DataGridViewColumn = DirectCast(cOrigine .Clone(), DataGridViewColumn)
     
    		dataGridViewDestination.Columns.Add(cDestination )
    	Next
    End Sub
     
     
    Private Sub dataGridViewOrigine_CellContentDoubleClick(sender As Object, e As DataGridViewCellEventArgs)
    	Dim rDestination As DataGridViewRow = DirectCast(dataGridViewDestination.Rows(0).Clone(), DataGridViewRow)
    	Dim i As Integer = 0
    	For Each cell As DataGridViewCell In dataGridViewOrigine.Rows(e.RowIndex).Cells
    		rDestination.Cells(i).Value = cell.Value
    		i += 1
    	Next
    	dataGridViewDestination.Rows.Add(rDestination )
    	dataGridViewDestination.Refresh()
    End Sub

  3. #3
    Membre du Club
    Homme Profil pro
    developpeur
    Inscrit en
    Décembre 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : developpeur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2011
    Messages : 141
    Points : 60
    Points
    60
    Par défaut
    Merci pour ta proposition

    Dans ton exemple "DataGridViewColumn" serai mon Datagridview1 et "dataGridViewOrigine" serai mon Datagridview2 ??

  4. #4
    Membre éprouvé
    Avatar de dkmix
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    619
    Détails du profil
    Informations personnelles :
    Localisation : Jamaïque

    Informations forums :
    Inscription : Septembre 2007
    Messages : 619
    Points : 924
    Points
    924
    Par défaut
    Non,
    DataGridViewColumn est DataGridViewColumn
    dataGridViewOrigine est dataGridView1
    dataGridViewDestination est dataGridView2

  5. #5
    Membre du Club
    Homme Profil pro
    developpeur
    Inscrit en
    Décembre 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : developpeur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2011
    Messages : 141
    Points : 60
    Points
    60
    Par défaut
    J'ai testé sur la base de ton exemple mais rien ne se passe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
            For Each cOrigine As DataGridViewColumn In DataGridView2.Columns
                Dim cDestination As DataGridViewColumn = DirectCast(cOrigine.Clone(), DataGridViewColumn)
     
                DataGridView1.Columns.Add(cDestination)
            Next
     
        End Sub
     
     
    Private Sub DataGridView2_CellContentDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView2.CellContentDoubleClick
     
            Dim rDestination As DataGridViewRow = DirectCast(DataGridView1.Rows(0).Clone(), DataGridViewRow)
            Dim i As Integer = 0
            For Each cell As DataGridViewCell In DataGridView2.Rows(e.RowIndex).Cells
                rDestination.Cells(i).Value = cell.Value
                i += 1
            Next
            DataGridView1.Rows.Add(rDestination)
            DataGridView1.Refresh()
     
     
     
        End Sub
    Mon DGV1 est ma destination et mon DGV2 et ma bibliothèque ou je souhaiterai piocher mes lignes à copier.

  6. #6
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2012
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 330
    Points : 774
    Points
    774
    Par défaut
    Bonsoir,

    Dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim rDestination As DataGridViewRow = DirectCast(DataGridView1.Rows(0).Clone(), DataGridViewRow)
    tu doit faire référence à la ligne ou a eu lieu le click

    Soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim rDestination As DataGridViewRow = DirectCast(DataGridView2.Rows(e.RowIndex).Clone(), DataGridViewRow)

  7. #7
    Membre éprouvé
    Avatar de dkmix
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    619
    Détails du profil
    Informations personnelles :
    Localisation : Jamaïque

    Informations forums :
    Inscription : Septembre 2007
    Messages : 619
    Points : 924
    Points
    924
    Par défaut
    tu doit faire référence à la ligne ou a eu lieu le click

  8. #8
    Membre du Club
    Homme Profil pro
    developpeur
    Inscrit en
    Décembre 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : developpeur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2011
    Messages : 141
    Points : 60
    Points
    60
    Par défaut
    Merci pour vos conseils Rainui

    Cependant toujours aucun résultat même après rectification... mis à part une exception dans mon évènement CellContentDoubleClick :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataGridView1.Rows.Add(rDestination)
    => Impossible d'ajouter par programmation des lignes à la collection de lignes DataGridView lorsque le contrôle est lié aux données.


    sa aurai été trop beau que cela marche ^^

    J'ai l'impression qu'entre 2 datasources bindés cela n'ai pas fesable ?

  9. #9
    Membre éprouvé
    Avatar de dkmix
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    619
    Détails du profil
    Informations personnelles :
    Localisation : Jamaïque

    Informations forums :
    Inscription : Septembre 2007
    Messages : 619
    Points : 924
    Points
    924
    Par défaut
    Il faut appliquer la même logique aux données liées (Datatable je suppose)
    - Créer un datarow dans le datatable destination.
    - Pour chaque cellule du datarow origine, copier les valeurs vers le datarow destination
    - rafraîchir l'affichage du DGV destination

  10. #10
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2012
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 330
    Points : 774
    Points
    774
    Par défaut
    Bonjour,

    C'est ça de lire en diagonale... Ton DatagridView2 est lui aussi bindé à une source de donnée, j'avais pas fait gaffe

    Donc oui, comme le dit Dkmix, tu ajoutes une DataRow dans la DataTable source de ton DataGridView2. Avec la même logique que Dkmix t'as donnée, tu remplis ton DataRow, tu l'ajoute à ton DataTable et tu n'oublies pas de réaffecter la source de données une fois qu'elle est modifiée.

    Ca devrait fonctionner

  11. #11
    Membre du Club
    Homme Profil pro
    developpeur
    Inscrit en
    Décembre 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : developpeur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2011
    Messages : 141
    Points : 60
    Points
    60
    Par défaut
    Désolé je débute .... auriez-vous un exemple que je puisse essayer d'adapter vos conseils sur mon bout de projet.

    D'après vos conseils je ne serai pas loin du but recherché

    Je continue d'essayer de traduire vos derniers conseils....

    Merciiii

  12. #12
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2012
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 330
    Points : 774
    Points
    774
    Par défaut
    Bonsoir,

    Combien tu payes???

    Je vais voir pour te faire un petit exemple qu'il te faudra adapter.

    Si je résume, tu as deux DataGridView, une dans laquelle tu as tout tes produits et l'autre représente les sélections. C'est bien ça?

  13. #13
    Membre du Club
    Homme Profil pro
    developpeur
    Inscrit en
    Décembre 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : developpeur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2011
    Messages : 141
    Points : 60
    Points
    60
    Par défaut
    je suis étudiant les fins de mois sont difficiles

    Avec un bout d'exemple je vais essayer de l'adapter à mes datagridview

    Merci pour ton aide précieuse Rainui

  14. #14
    Membre du Club
    Homme Profil pro
    developpeur
    Inscrit en
    Décembre 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : developpeur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2011
    Messages : 141
    Points : 60
    Points
    60
    Par défaut
    oui c'est tout a fait cela ! mon DGV 2 correspond à ma "bibliothèque" ou je souhaite choisir les lignes a copier par le doubleclik

  15. #15
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2012
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 330
    Points : 774
    Points
    774
    Par défaut
    Voilà une tout petit exemple fonctionnel pour ce que tu demandes.

    Il faut tout de même voir comment tu gères par la suite les données de ton DGV de destination et voir le schéma de ta base de données.
    Fichiers attachés Fichiers attachés

  16. #16
    Membre du Club
    Homme Profil pro
    developpeur
    Inscrit en
    Décembre 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : developpeur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2011
    Messages : 141
    Points : 60
    Points
    60
    Par défaut
    sa y est il faut doublecliquer sur Désignation par exemple !

    Merci énormément

    Je vais essayer tout de suite d'adapter ton exemple au mien !

  17. #17
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2012
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 330
    Points : 774
    Points
    774
    Par défaut
    Bonsoir,

    Mon exemple fonctionne très bien chez moi, je ne t'aurais pas donné un exemple qui ne fonctionne pas

    Si tu cliques sur une cellule de la colonne ID, l'évènement clic ne se produit pas car les colonnes sont créées par l'auto génération. Il met la colonne ID en ReadOnly.

Discussions similaires

  1. copier-coller d'une treeview vers elle-même
    Par fredonouille dans le forum Windows Forms
    Réponses: 2
    Dernier message: 26/05/2008, 09h12
  2. Copier coller sur une listView
    Par themahg dans le forum Windows Forms
    Réponses: 3
    Dernier message: 17/05/2008, 12h21
  3. [VBA] Pb avec Copier/coller d'une feuille Excel
    Par sebastien_oasis dans le forum Excel
    Réponses: 3
    Dernier message: 14/12/2007, 11h08
  4. [VBA-E]Faire un Copier coller d'une ListBox à une autre
    Par anubisigfrid dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/03/2007, 14h40
  5. [VB.NET] copier coller d'une valeur
    Par mic56 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 08/06/2004, 11h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo