web-dev-qa-db-fra.com

Comment lier des données dans la colonne datagridview combobox

Voici des contacts mais nous pouvons avoir plusieurs contacts donc je veux montrer une liste dans combobox

DataTable dt = new DataTable();
dt = MainClass.GetDatabyQuery("select * from tbl");

if (dt.Rows.Count > 0)
{
    dgv_ClientDetail.DataSource = dt;
}

J'ai cette méthode pour récupérer les valeurs de la base de données dans datagridview mais je veux une colonne datagridview combobox et je veux lier des données dans un combobox dgv et dans des texbox dgv. Si quelqu'un sait, dis-le moi. Voici trois colonnes Nom, Ville, Contacts. Je veux montrer plusieurs contacts dans la colonne dgv combobox

5
Vampire

Il suffit de sélectionner uniquement Name et City dans dt pour pouvoir faire quelque chose comme

        dgv_ClientDetail.DataSource = dt;
        DataGridViewComboBoxColumn dgvCboColumn = new DataGridViewComboBoxColumn();
        dgvCboColumn.Name = "Contacts";
        dgvCboColumn.DataSource = dtContacts; //DataTable that contains contact details
        dgvCboColumn.DisplayMember = "Name";
        dgvCboColumn.ValueMember = "Id";
        dataGridView1.Columns.Add(dgvCboColumn);

MODIFIER:

        dgv_ClientDetail.DataSource = new DataView(dt)
                                         .ToTable(true, new string[] { "Name", "City" });
        DataGridViewComboBoxColumn dgvCboColumn = new DataGridViewComboBoxColumn();
        dgvCboColumn.Name = "Contacts";
        dgv_ClientDetail.Columns.Add(dgvCboColumn);
        foreach (DataGridViewRow row in dgv_ClientDetail.Rows)
        {
            DataGridViewComboBoxCell cboContacts = (DataGridViewComboBoxCell)
                                                         (row.Cells["Contacts"]);
            cboContacts.DataSource = //Get the contact details of a person,
                                     //using his Name or Id field (row.Cells["Name"]);
            cboContacts.DisplayMember = "Name"; //Name column of contact datasource
            cboContacts.ValueMember = "Id";//Value column of contact datasource
        }

J'espère que cela t'aides...

3
Vanest

Essaye ça:-

D'abord, il suffit d'avoir la clé de données dans DataGridView pour le contact. Et sur ItemDatabound Events, utilisez simplement datakey pour filtrer chaque dataitem dans ce DataGridView.

0
Ashish Bisht

Essayez quelque chose comme ça

// Loop through rows and get each combobox

foreach (DataGridViewRow row in dgv_ClientDetail.Rows)
{
     DataGridViewComboBoxCell ContactCombo = (DataGridViewComboBoxCell)(row.Cells[index of Contact column]);

     ContactCombo.DataSource = // your contacts datasource;
     ContactCombo.DisplayMember = "name of field to be displayed like say ContactName";
     ContactCombo.ValueMember = "Id";
}

Edit: vous devez également définir ValueMember pour la liste déroulante.

0
tariq