简体   繁体   English

C#在datagridview中为组合框设置数据源

[英]C# set datasource for combobox in datagridview

I have two tables, Units and Frequencies in an old program. 我在一个旧程序中有两个表,单位和频率。 frequency table has a foreign key to units table, A datagridview set it's datasource to units table. 频率表有一个到单位表的外键,一个datagridview设置它的数据源到单位表。 I want add a combobox to this datagridview contains frequencies. 我想向此包含频率的datagridview添加一个组合框。

select units 选择单位

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;

UPDATE: 更新:

I changed my code, but all frequencies shows in combobox not only frequecies for this unitID in each row. 我更改了代码,但是所有频率都在组合框中显示,不仅每行都有此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;`

you search for each data of frequencies in row 您在行中搜索频率的每个数据

  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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM