[英]C# set datasource for combobox in datagridview
我在一個舊程序中有兩個表,單位和頻率。 頻率表有一個到單位表的外鍵,一個datagridview設置它的數據源到單位表。 我想向此包含頻率的datagridview添加一個組合框。
選擇單位
var data = context.Units.Where(u => u.Center.center_name.Trim() == cmbCenters.Text.Trim()).ToList();
// my datagridview
dgResult.AutoGenerateColumns = false;
dgResult.Columns.Clear();
....
....
if (chkRx.Checked)
{
DataGridViewComboBoxColumn rxColumn = new DataGridViewComboBoxColumn();
rxColumn.Name = "RX";
rxColumn.ValueMember = "unitID";
rxColumn.DispalyMember = "rxfreq";
rxColumn.Datasource = context.Frequencies.ToList();
dgResult.Columns.Add(rxColumn);
}
if (chkTx.Checked)
{
DataGridViewComboBoxColumn txColumn = new DataGridViewComboBoxColumn();
txColumn.Name = "TX";
txColumn.ValueMember = "unitID";
txColumn.DispalyMember = "txfreq";
txColumn.Datasource = context.Frequencies.ToList();
dgResult.Columns.Add(txColumn);
}
dgResult.DataSource = data;
更新:
我更改了代碼,但是所有頻率都在組合框中顯示,不僅每行都有此unitID的頻率。
if (chkRx.Checked)`
{
DataGridViewComboBoxColumn rxColumn = new DataGridViewComboBoxColumn();
rxColumn.Name = "RX";
//rxColumn.DataPropertyName = "BRxs";
var datafrequencies =context.Frequencies.ToList();
rxColumn.DataSource = datafrequencies;
rxColumn.ValueMember = "frequencyId";
rxColumn.DisplayMember = "frequencyName";
dgResult.Columns.Add(rxColumn);
}
dgResult.DataSource = data;`
您在行中搜索頻率的每個數據
private void dgResult_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
DataGridViewComboBoxEditingControl comboControl = e.Control as DataGridViewComboBoxEditingControl;
if (comboControl != null)
{
//Set the DropDown style to get an editable ComboBox
if (comboControl.DropDownStyle != ComboBoxStyle.DropDown)
{
comboControl.DropDownStyle = ComboBoxStyle.DropDown;
//int r = dgvconn.CurrentRow.Index;
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.