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

C# Discussion :

Transfert de données d'une datagridview à l'autre dans des formes différentes


Sujet :

C#

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Transfert de données d'une datagridview à l'autre dans des formes différentes
    Bonjour,
    J'ai deux datadridview ( datagridview1 vide dans Form1 et datagridview2 affichant quelques éléments de la DB dans Form2).
    Un bouton "ajouter" sur Form1 et un bouton "selectionner" sur Form2.


    Mon désire est que si je clique sur un bouton ajouter dans Form1, j'ouvre Form2. Lorsque je selectionne une ligne de datagridview2 et que je clique sur le bouton "selectionner " cette ligne s'affichera dans la datagridview1 de Form1 et disparaitra dans datagridview2 (Form2).

    Même si je clique encore sur "Ajouter" j'arrive à faire la même chose.

    Merci pour votre aide

  2. #2
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut
    bonjour geralson4

    Tu peux faire ceci:
    -transmettre en parametre le DGV Destination dans le constructeur du form2 qui se chargera d'y recopier la structure Colonnes et
    -ensuite sur chaque click Select du Form2 une ligne de donnees du DGV Src est copiee dans DGV Dest ensuite "removee" du DGV src .....
    code behind .cs du class person (pour le test):
    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
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
     
    namespace WinCloningDGV
    {
     
     
            public class Person
            {
                public Person(string fn,string ln)
                {
                    FName=fn;
                    LName=ln;
                }
                public string FName{get; set;}
                 public string LName{get; set;}
            }
     
    }
    code behind .cs du form1:
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    //ajouter :
    // -un bouton 
    // -un label
    // -dgv destination vide
     
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
     
    namespace WinCloningDGV
    {
        public partial class Form1 : Form
        {
            private Form2 frm2 ;
     
            public Form1( )
            {
                InitializeComponent();
            }
     
     
            private void btnAdd_Click(object sender, EventArgs e)
            {
                frm2 = new Form2(this.dgvDest); 
                frm2.Show();
                this.dgvDest.Invalidate();
                this.label1.Text = "Nb Cols Crees :" + dgvDest.Columns.Count.ToString();
     
            }
     
     
        }
    }
    code behind .cs du form2:

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
     
    // ajouter :
    // -un bouton selection(btnSelect)
    // -le dgv source(dgvSrc)
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
     
    namespace WinCloningDGV
    {
        public partial class Form2 : Form
        {
            //variable qui store DGV Destination transmis en parametre
            private DataGridView dgv;
            public Form2()
            {
                InitializeComponent();
            }
            public Form2(DataGridView  pDGV):this()
            {
                dgv = pDGV; 
                btnSelect.Enabled = false;
     
                // BindingSource est necessaire car ici j'utilise prop 
                // DataSource  pour remplir le DGV Source 
                // Sans lui je ne peux pas supprimer des lignes du DGV Source 
                // AUTREMENT si tu remplis DGV source sans passer par un DataSource 
                // pas besoin du BindingSource
     
                BindingSource bds=new BindingSource();
                bds.DataSource = GetData(); //Obtient les donnees
                this.dgvSrc.DataSource = bds;
     
            }
            // Chargement:copie des Columns 
            //  DGV Source => dans DGV destination
            private void Form2_Load(object sender, EventArgs e)
            {
                if (dgv == null) return;
                btnSelect.Enabled = true;
     
                DataGridViewColumnCollection cols = this.dgvSrc.Columns;
                foreach (DataGridViewColumn col in cols)
                {
                    dgv.Columns.Add((DataGridViewColumn)col.Clone());
                }
                this.dgv.Invalidate();
            }
            //index de colonne courante(voir plus loin)
            private int oldRowIndex = -1;
            private void btnSelect_Click(object sender, EventArgs e)
            {
                    dgvSrc.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
                    dgvSrc.MultiSelect = true;
                    if (oldRowIndex == -1) return;
     
                    DataGridViewCellCollection cells =this.dgvSrc.Rows[oldRowIndex].Cells;
     
                    //ajout une row    
                    dgv.Rows.Add();
                    int index = dgv.Rows.Count-2;
     
                    for (int j = 0; j < cells.Count; j++)
                    {
                        dgv.Rows[index].Cells[j].Value = cells[j].Value;
     
                    }
                    //maj affichage
                    dgv.Update();
     
                    //remove row ajoute
                    //(il est remove de la liste data egalement car bds s'en occupe)
                    dgvSrc.Rows.RemoveAt(oldRowIndex);
     
                    //maj affichage
                    dgvSrc.Update();
     
     
     
            }
     
            //recupere l'index courant
            private void dgvSrc_CurrentCellChanged(object sender, EventArgs e)
            {
                oldRowIndex = this.dgvSrc.CurrentCellAddress.Y;
            }
     
            //charge les data
            private List<Person>  GetData()
            {
                Person p;
                List<Person> l = new List<Person>();
                for (int i = 0; i < 10; i++)
                {
                    p = new Person("FName" + i.ToString(), "LName" + i.ToString());
                    l.Add(p);
                }
     
                return l;
            }
     
     
     
     
     
     
        }
    }
    bon code............

Discussions similaires

  1. [XL-2003] transfert de données d'une colonne à l'autre
    Par coolman53 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/09/2012, 09h52
  2. Transfert de données d'une table à l'autre
    Par Emeline1989 dans le forum Access
    Réponses: 1
    Dernier message: 07/12/2010, 14h43
  3. transfert de données d'une feuille à d'autres
    Par cline01 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/07/2010, 22h36
  4. Réponses: 5
    Dernier message: 16/07/2007, 10h14
  5. transfert de données d'une table à l'autre
    Par VIRGINIE87 dans le forum Access
    Réponses: 12
    Dernier message: 06/03/2007, 07h48

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