ここに連絡先がありますが、複数の連絡先を持つことができるので、コンボボックスにリストを表示したいと思います
DataTable dt = new DataTable();
dt = MainClass.GetDatabyQuery("select * from tbl");
if (dt.Rows.Count > 0)
{
dgv_ClientDetail.DataSource = dt;
}
Datagridviewのデータベースから値をフェッチするこのメソッドがありますが、1つのdatagridviewコンボボックス列が必要で、1つのdgvコンボボックスとdgvtexboxの別のデータをバインドしたいと思います。誰か知っているなら教えてください。名前、都市、連絡先の3つの列があります。 dgvコンボボックス列に複数の連絡先を表示したい
Name
でCity
とdt
のみを選択するだけで、次のようなことができます。
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);
編集:
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
}
お役に立てれば...
これを試して:-
まず、連絡先のDataGridViewにデータキーを設定します。また、ItemDataboundイベントでは、そのDataGridView内の各Dataitemのフィルターにdatakeyを使用するだけです。
このようなものを試してください
// 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";
}
編集:コンボボックスにもValueMemberを設定する必要があります