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

Windows Forms Discussion :

copie de rows d'un gridview à un autre


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2005
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 534
    Par défaut copie de rows d'un gridview à un autre
    Bonjour à tous

    Je cherche un code simple pour copier des rows d'un gridView directement dans un autre, par doubleClick, en clochant un checkbox d'un row ou par un raccourci clavier.
    En fait le code est le même ... seul l'instigateur change

    Les deux gridView seraient l'un en dessous de l'autre mais appartiendraient chacun à un userControl différent ... sans que cela affecte beaucoup le code ?

    Voir le fichier joint

    Images attachées Images attachées  

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Par défaut
    D'après le fichier image, je peux juste te répondre que ta question est probablement très mal tournée.

  3. #3
    Membre éclairé
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2005
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 534
    Par défaut
    Citation Envoyé par sinople Voir le message
    D'après le fichier image, je peux juste te répondre que ta question est probablement très mal tournée.
    Ta remarque ne le serait sans doute pas moins ... mais ce n'est pas le sujet

    Je suppute que ton propos est en rapport aux noms des colonnes qu'on ne retrouve pas d'un GridView à l'autre, sinon à quoi fais-tu allusion ?

    Si c'est le cas, le doubleClick d'un row du GridView supérieur va aussi permettre d'aller chercher des infos complémentaires pour remplir celui du bas en fonction des besoins. C'est juste des données qui ne sont pas affichées dans le Gridview du haut.

    Mon objectif premier est simplement de trouver le code adéquat pour copie tout ou partie du GridView supérieur dans le deuxième, sachant aussi que ce sont deux UserControls différents. sans que cela soit une contrainte problématique supplémentaire

    Me serais-je toujours aussi mal fait comprendre mon cher Sinople ?

    __________________________
    Save a tree, eat a beaver

  4. #4
    Membre émérite Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Par défaut
    Salut,
    C'est bien la capture d'écran mais en fait ca ne nous sert à rien, enfin à mon avis.
    Ce qui manque c'est du code. La on ne sait pas comment sont architecturés tes grilles (tu dis qu'elles sont dans des user-control différents, mais ils sont où ces usercontrols ? ils se connaissent l'un-lautre ?). On ne sait pas non plus comment elles sont remplies ("a la main" ? par binding ? ...).

    Avec si peu d'infos je vois mal comment on peu chercher une réponse à ta question.

    La comme ca je serais partis sur une fonction qui lit une ligne d'un DataTable et créer une ligne dans un autre DataTable en copiant les valeurs du premiers lorsque les colonnes sont en commun. Mais j'ai toutes les chances de n'avoir pas compris ce que tu voulais....

  5. #5
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Par défaut
    A savoir que ta grille en haut est probablement reliée à une bindingsource.

    La propriété du bindingsource current.row renvoie l'enregistrement courant.

    Il suffirait donc de faire une fonction sur tes différents évenements qui récupère l'enregistrement en cours du bindingsource en haut puis d'ajoute un enregistrement sur la datatable qui est affichée en bas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Bindingsource.current.row.Nomduchamp
     
    Datatable.rows.Add()
    Bien entendu ceci n'est valable que si tes grilles sont liées à des datatables par des bindingsources.

    Ah j'ai failli oublié. Je suis pas persuadé que l'utilisation de la checkbox soit juste d'un point de vue ergonomique (une checkbox n'est pas un pseudo bouton, elle indique une valeur booléenne dans un contexte), enfin ça peut être juste ou faux selon ce que t'en fais (mais là je penche sur le faux...).

  6. #6
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Par défaut
    Salut donc je te poste une fonction qui te permettra, si tu l'associée à l'évènement que tu désire, de créer une nouvelle ligne, d'y transférer les informations du premier dgv et enfind 'ajouter cette nouvelle ligne à ton dgv secondaire.

    Attention je ne t'ai codé le transfert d'information que pour la première cellule. Il faut impérativement que la 'nouvelle ligne' à insérer dans le dgv secondaire ait exactement le même nombre de colonnes que le dgv secondaire.

    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
    26
    27
    28
     
    private void DoubleClic_DGV(Object sender,EventArgs e)
            {
                int rowIndex = -1 ;
                /*Recherche de l'index de la ligne*/
                if (dgv_1.SelectedCells.Count > 0) // on a une ligne sélectionnée
                {
                    DataGridViewCell cell = dgv_1.SelectedCells[0]; //la cellule de ta ligne, colonne 1
                    rowIndex = cell.RowIndex;                       //l'index de ta ligne
                }
                if (dgv_1.SelectedRows.Count > 0) // on a une ligne sélectionnée
                {
                    DataGridViewRow row = dgvSpec.SelectedRows[0];
                    rowIndex = row.Index;
                }
                if (rowIndex != -1) // on a un index on 
                {
                    DataGridViewRow row_dgv_1 = dgv_1.Rows[rowIndex]; //ici on récupère la ligne sélectionnée 
                    DataGridViewTextBoxCell tbc_1 = (DataGridViewTextBoxCell)row_dgv_1.Cells[0]; //ici crée un objet cellule et on lui transfère la valeur du datagridview 1
     
                    DataGridViewRow row_dgv_2 = new DataGridViewRow(); //ici on cree un ligne non attribuée
                    DataGridViewTextBoxCell tbc_Nouvelle_1 = new DataGridViewTextBoxCell(); //ici on cree une cellule non attribuée
                    tbc_Nouvelle_1.Value = tbc_1.Value; //ici on transfère la valeur de la cellule 0 du dgv_1 vers la valeur cette nouvelle cellule
                    row_dgv_2.Cells.Add(tbc_Nouvelle_1); //ici on ajoute la cellule à la ligne non attribuée
                    dgv_2.Rows.Add(row_dgv_2) ; //ici on ajoute au datagridview 2 la ligne
     
                }
            }
    En espérant que cela t'aide.

Discussions similaires

  1. Copie de ligne d'un gridview à l'autre et image
    Par Fabby69 dans le forum Débuter
    Réponses: 4
    Dernier message: 29/10/2008, 14h57
  2. copie fichier.zip d'un serveur à un autre serveur
    Par lisa-java dans le forum Langage
    Réponses: 3
    Dernier message: 14/06/2006, 17h30
  3. Copie de fichiers d'un répertoire à un autre
    Par fleur_de_rose dans le forum MFC
    Réponses: 4
    Dernier message: 01/03/2006, 12h59
  4. Copie du style d'un RichEdit à un autre
    Par cedric24 dans le forum Composants VCL
    Réponses: 10
    Dernier message: 28/02/2006, 23h47
  5. Copie de base de données vers un autre PC
    Par claire.martin dans le forum Access
    Réponses: 19
    Dernier message: 06/01/2006, 15h20

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