2015-11-20 4 views
0

У меня есть две таблицы, единицы и частоты в старой программе. частотная таблица имеет внешний ключ для таблицы единиц, A datagridview устанавливает ее источник данных в таблицу единиц. Я хочу добавить combobox к этому datagridview содержит частоты.C# set datasource для combobox в 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; 

UPDATE:

Я изменил код, но все частоты показывает в выпадающем списке не только frequecies для этого UnitID в каждой строке.

+0

http://stackoverflow.com/questions/18656599/datagridview-with-datasource-and-combobox – MethodMan

+0

@MethodMan ты значишь, что я должен искать данные и создавать список частот для каждого блока строк и связывать их со списком. – Farhad378

+0

О чем вы говорите Я не понимаю вас .. Вы знакомы с '' – MethodMan

ответ

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

      } 
     } 
    } 
+0

Я тестирую это, но его добавляю все частоты не только частоты для этого блока в строке ineach – Farhad378

+0

var datafrequencies = context.Frequencies.ToList(); rxColumn.DataSource = datafrequencies; –

+0

DataGridViewComboBoxColumn txColumn = new DataGridViewComboBoxColumn(); txColumn.Name = "TX"; txColumn.DisplayMember = "Txfhertz"; txColumn.ValueMember = "bid"; txColumn.DataSource = context.Frequences.AsQueryable(). ToList(); – Farhad378

Смежные вопросы