2016-06-20 7 views
0

enter image description hereВ vb.net, как отобразить выбранное значение DataGridViewComboBoxColumn для DataGridViewTextBoxColumn

Смотрите изображение,

Департамент Идентификатор DataGridViewComboBoxColumn
Название отдела является DataGridViewTextBoxColumn

когда я выбираю идентификатор отдела, этот идентификатор должен отображаться в текстовом поле. может сопоставить идентификатор с именем отдела. Теперь проблема я не как получить выбранное значение DataGridViewComboBoxColumn и назначить DataGridViewTextBoxColumn

ответ

0

Решение этой проблемы

Мой полный код находится ниже

Форма модуля нагрузки

private void Form1_Load(object sender, EventArgs e) 
    { 
     BindingSource bs = new BindingSource(); 
     bs.Add("001"); 
     bs.Add("002"); 
     bs.Add("003"); 
     bs.Add("004"); 
     bs.Add("005"); 
     try 
     { 
      DataGridViewComboBoxColumn combo1 = new DataGridViewComboBoxColumn(); 
      combo1.HeaderText = "DepartmentID"; 
      combo1.DataSource = bs; 
      combo1.Width = 220; 
      dataGridView1.Columns.Add(combo1); 

       DataGridViewTextBoxColumn text1 = new DataGridViewTextBoxColumn(); 
       text1.Width = 200; 
       text1.HeaderText="DEPARTMENTNAME"; 
       text1.ReadOnly = true; 
       DataGridViewTextBoxCell txt = new DataGridViewTextBoxCell(); 
       dataGridView1.Columns.Add(text1); 

       DataGridViewComboBoxColumn combo2 = new DataGridViewComboBoxColumn(); 
       combo2.HeaderText = "Status"; 
       combo2.Items.Add("Active"); 
       combo2.Items.Add("InActive"); 
       combo2.Width = 220; 
       dataGridView1.Columns.Add(combo2); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("combo error"); 
     } 


    } 

dataGridView1_EditingControlShowing Модуль

private void dataGridView1_EditingControlShowing_1(object sender, DataGridViewEditingControlShowingEventArgs e) 
    { 
     ComboBox combo = e.Control as ComboBox; 
     if (combo != null) 
     { 
      // Remove an existing event-handler, if present, to avoid 
      // adding multiple handlers when the editing control is reused. 
      combo.SelectedIndexChanged -= new EventHandler(ComboBox_SelectedIndexChanged); 

      // Add the event handler. 
      combo.SelectedIndexChanged += new EventHandler(ComboBox_SelectedIndexChanged); 
     } 
    } 

ComboBox_SelectedIndexChanged Модуль

private void ComboBox_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     ComboBox cb = (ComboBox)sender; 
     string item = cb.Text; 
     int irow = dataGridView1.CurrentCell.RowIndex; 

     if (item != null) 
     { 
      if (dataGridView1.CurrentCell.ColumnIndex == 0) // This IF is used for handling first combobox event in gridview 
      { 
       dataGridView1.Rows[irow].Cells[1].Value = item; // cell index [1] represent DepartmentName 
      } 

     } 

    } 

Выход

Click here to view Output

0

Предположив у вас есть DataTable в качестве источника. Если да, то в случае щелчка представления DataGrid получить выбранное значение

Dim strValue as String = dgv.Rows(e.RowIndex).Cells(DataGridViewComboBoxColumn).Value 

теперь петлю через ваш DataTable и получить соответствующий отдел с выбранным идентификатором и получить значение, чтобы поместить его на колонке текстовое поле. что-то вроде этого

Dim row AS DataRow = DataTable.Select("ComboboxColumn = strValue").FirstOrDefault() 
If Not row Is Nothing Then strTextBoxColumn = row.Item("ComboboxColumn") 

Теперь присвоить значение в столбце текстовое поле на DataGrid зрения

dgv.rows(e.rowIndex).Cells(DataGridViewComboBoxColumn).Value = strTextBoxColumn 
+0

Спасибо за ваш ответ .. @Leprechaun –

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