How to bind data in datagridview combobox column

Vampire picture Vampire · Jun 12, 2015 · Viewed 29.7k times · Source

Here are contacts but we can have multiple contacts so i want to show a list in combobox

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

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

I have this method to fetch values from database in datagridview but I want one datagridview combobox column and want to bind data in one dgv combobox and other in dgv texboxes. If anybody know then tell me. Here are three columns Name, City , Contacts. I want to show multiple contacts in dgv combobox column

Answer

Vanest picture Vanest · Jun 12, 2015

Just select only Name and City in dt, so that you can do something like,

        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);

EDIT:

        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
        }

Hope this helps...