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 :

Remplir un datagridview


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 116
    Par défaut Remplir un datagridview
    Bonjour,

    Voila je sais comment ajouter plusieurs lignes dans un datagrid view. Voila mon probleme:

    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
    DataGridViewRow oDataGridViewRow = new DataGridViewRow();
    DataTable dt = new DataTable();
                cmd = new SqlCommand("GetOrganizations", cnx); //procedure stocké
                cmd.CommandType = CommandType.StoredProcedure;
                dta = new SqlDataAdapter(cmd);
                dta.Fill(dt);
     
     
     
                for (i = 0; i < dt.Rows.Count; i++)
                {
     
                    id.CellTemplate.Value = dt.Rows[i][0];
                    nom.CellTemplate.Value = dt.Rows[i][1];
                    email.CellTemplate.Value = dt.Rows[i][2];
                    tel.CellTemplate.Value = dt.Rows[i][3];
                    statut.Value = dt.Rows[i][4];
     
                    oDataGridViewRow.Cells.Add(id.CellTemplate); // <== erreur
                    oDataGridViewRow.Cells.Add(nom.CellTemplate);
                    oDataGridViewRow.Cells.Add(email.CellTemplate);
                    oDataGridViewRow.Cells.Add(tel.CellTemplate);
                    oDataGridViewRow.Cells.Add(statut);
     
                    dataGridView1.Rows.Add(oDataGridViewRow);
                }
    l'erreur retourné c'est :
    Cette collection appartient déjà à un contrôle DataGridView. Cette opération n'est plus valide.
    P.S. L'erreur se declenche si j'ai plus d'une ligne dans ma datatable sinon ça marche trés bien

  2. #2
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Sans vouloir decrypter la pertinence de ce que essaye de faire pour quoi tu n'utilise pas tout simplement la propriété DataSource de ton dgv ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MonDgv.DataSource = null;
    MonDgv.DataSource = dt;

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 116
    Par défaut
    Salut,

    Pourquoi j'utilise pas directement grid.datasource parce que je veux personnaliser les colonnes de ma grid ainsi d'ajouter un combobox. j'appel deja une fonction de ce genre:
    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
    public void chargerDatagridViewColonnes()
            {
     
     
                DataGridViewTextBoxColumn id;
                DataGridViewTextBoxColumn nom;
                DataGridViewTextBoxColumn email;
                DataGridViewTextBoxColumn tel;
                DataGridViewComboBox.DataGridViewComboBoxColumn statut;
     
     
                id = new DataGridViewTextBoxColumn();
                nom=new DataGridViewTextBoxColumn();
                email = new DataGridViewTextBoxColumn();
                tel = new DataGridViewTextBoxColumn();
                statut = new DataGridViewComboBox.DataGridViewComboBoxColumn();
     
     
                id.Width = 50;
                id.HeaderText = "Id";
                nom.Width = 100;
                nom.HeaderText = "Nom";
                email.Width = 100;
                email.HeaderText = "Email";
                tel.Width = 100;
                tel.HeaderText = "Tel";
                statut.Width = 80;
                statut.HeaderText = "Statut";
     
     
                dataGridView1.Columns.Add(id);
                dataGridView1.Columns.Add(nom);
                dataGridView1.Columns.Add(email);
                dataGridView1.Columns.Add(tel);
                dataGridView1.Columns.Add(statut);
     
     
            }

  4. #4
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Salut

    Il y a deux besoin distinct dans ce que tu souhaite faire

    1- Definir explicitement les colonnes a binder sur ta source
    2- Definir une comboboxcolumn et l'exploiter

    Utiliser le Datasource n'exclut pas de pouvoir exploiter un ComBoBoxColumn et dans ton cas je ne vois aucune raison de vouloir remplir ton DGV itérativement

    Et MEME si un remplissage itératif doit etre envisagé, il vaut généralement mieux dans ce cas remplir une datatable pour la binder sur le dgv

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 116
    Par défaut
    Re,

    Lorsque je comme suite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    dt = new DataTable();
                cmd = new SqlCommand("GetOrganizations", cnx);
                cmd.CommandType = CommandType.StoredProcedure;
                dta = new SqlDataAdapter(cmd);
                dta.Fill(dt);
                dataGridView1.DataSource = dt;
    ça marche, mais je veux que la derniere colonne contient un combobox.
    Comment je peux faire sans la methode que j'ai deja fais??

  6. #6
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Voici une piste (parmis d'autres)

    Dans le cas present j'ai defini a l'aide du designer les colonnes a binder sur ma datasource

    Le DGV contient une colonne combo (cbxMachin définies dans le designer)



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
         cbxMachin.DataSource = sCodes.dtMachins;
          cbxMachin.DisplayMember = "Value";
          cbxMachin.ValueMember = "ID";
          cbxMachin.DataPropertyName = "ID";
     
     
          dgvMachins.DataSource = null;
          dgvMachins.AutoGenerateColumns = false;
          dgvMachins.DataSource = Reg.Prod.dtMachins;
     
          dgvMachins.EditMode = DataGridViewEditMode.EditOnEnter;
          cbxMachin.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing;
    J'exploite l'event EditingControlShowing
    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
     
    // *********************************************************************************
        private void dgvMachins_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
          // TODO gerer la condition de sortie
          if (false)
          {
            return;
          }
     
          ComboBox combo = e.Control as ComboBox;
          if (combo != null)
          {
            combo.DropDownStyle = ComboBoxStyle.DropDown;
            combo.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
            combo.AutoCompleteSource = AutoCompleteSource.ListItems;
          }
        }

Discussions similaires

  1. Remplir un DataGridView avec le contenu d'un fichier excel
    Par belmansour tidjani dans le forum Windows Forms
    Réponses: 7
    Dernier message: 05/06/2018, 14h08
  2. [c#] Remplir un DataGridView avec plusieurs DataTable
    Par macfred dans le forum Windows Forms
    Réponses: 2
    Dernier message: 23/02/2010, 11h02
  3. remplir de datagridview
    Par omlov88 dans le forum C#
    Réponses: 2
    Dernier message: 04/12/2007, 16h45
  4. remplir un DataGridView
    Par mon_pierre dans le forum Windows Forms
    Réponses: 6
    Dernier message: 29/11/2007, 10h32
  5. [WinForms][2.0] Remplir un DataGridView
    Par SoGood dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 04/12/2006, 13h46

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