How to bind data in datagridview combobox column

前端 未结 3 1351
失恋的感觉
失恋的感觉 2020-12-20 23:34

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(\"         


        
相关标签:
3条回答
  • 2020-12-20 23:49

    Try something like this

    // 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: You need to set ValueMember for combobox as well

    0 讨论(0)
  • 2020-12-21 00:07

    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...

    0 讨论(0)
  • 2020-12-21 00:13

    Try This:-

    First just have data key in DataGridView for the contact. And on ItemDatabound Events just use the datakey for filter for each Dataitem with in that DataGridView.

    0 讨论(0)
提交回复
热议问题