2014-12-24 2 views
0

Первая ячейка моего DataGridView - ComboBox. Я добавляю пользователей в этой колонке, как показано ниже ...`DataGridViewComboBoxCell` возвращает` null`

DataTable dt = new DataTable(); 
string qry = "SELECT [NAME] FROM [PERSONS]"; 

// running ExcecuteNonQuery() function in globalData.cs file 
dt = globalData.q.select(qry, globalData.connectionstring); 

foreach (DataRow row in dt.Rows) 
{ 
    (this.dataGrid.Columns["Name"] as DataGridViewComboBoxColumn).Items.Add(row[0].ToString()); 
} 

и проверка на Cell_Leave события

if ((this.dataGrid.CurrentRow.Cells[0] as DataGridViewComboBoxCell).Value == null) 
{ 
    MessageBox.Show("You must select one option."); 
} 

Но значение возвращает null каждый раз, даже если значение выбирается из ComboBoxCell. Здесь Cell не null, но значение ячейки равно нулю.

Что случилось с этим?

+0

datagridviewcomboboxcolumn добавить во время выполнения или уже добавлен в DataGridView – SK2185

+0

уже добавлен в 'DataGridView'. – DhavalR

+0

свяжите ваш datagridviewcombobox в форме load event ex: Name .Datasource = "yoursource"; Name.DisplayMember = "Dispmem"; Name.ValueMember = "Valuemem"; – SK2185

ответ

0

Я достиг этого, как показано ниже ....

private void DataGrid_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) 
    { 
     if (this.dataGrid.CurrentCell.ColumnIndex == 0 && e.Control is ComboBox) 
     { 
      ComboBox comboBox = e.Control as ComboBox; 
      comboBox.KeyDown += this.DataGridComboBox_KeyDown; 
     } 
    } 

    private void DataGridComboBox_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (!(e.Control && e.KeyCode == Keys.S) && !(e.Control && e.KeyCode == Keys.C)) 
     { 
      try 
      { 
       var currentcell = this.dataGrid.CurrentCellAddress; 
       var sendingCB = sender as DataGridViewComboBoxEditingControl; 
       DataGridViewComboBoxCell cel = (DataGridViewComboBoxCell)this.dataGrid.Rows[currentcell.Y].Cells[0]; 
       cel.Value = sendingCB.EditingControlFormattedValue.ToString(); 
      } 
      catch { } 
     } 
    } 
Смежные вопросы