0

Я новичок в разработке приложений для форм Windows.Не удалось найти свойство «SelectedIndex» DataGridViewComboBoxColumn в Visual Studio 2010

Я использую редактируемый вид сетки для ввода данных.

Одно из полей в виде сетки имеет тип ComboBoxColumn. Я заполняю данные в коде.

Моя проблема в том, что если количество элементов данных больше 0, тогда первый элемент должен быть выбран автоматически.

Мой код из Page_Load() является:

private void Form1_Load(object sender, EventArgs e) 
{ 
    cn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\Study\sem 6\Practice\WindowsFormsApplication1\Practice.accdb"); 
    cn.Open(); 
    cmd = new OleDbCommand("Select * from Grade", cn); 
    da = new OleDbDataAdapter(cmd); 
    ds = new DataSet(); 
    da.Fill(ds); 
    cn.Close(); 
} 

private void dataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e) 
{ 
    DataGridViewComboBoxCell cmb = (DataGridViewComboBoxCell)(dataGridView1.Rows[e.RowIndex].Cells[1]); 
    cmb.DataSource = ds.Tables[0]; 
    cmb.DisplayMember = "Grd"; 
    cmb.ValueMember = "ID"; 

    if(cmb.Items.Count > 0) 
    // Here I am not finding the the combo box's SelectedIndex Property. 
} 

Пожалуйста, помогите решить эту проблему.

Заранее спасибо.

+0

cmb.SelectedItem. Вы ищете это? –

+0

Да, но я не нахожу ни 'cmb.SelectedItem', ни' cmb.SelectedIndex' @FaisalHafeez –

+0

cmb.Value или cmb.DisplayMember. –

ответ

0

Класс DataGridViewComboBoxCell не имеет этих свойств. Посмотрите на documentaion

Others попробовали другой подход. В вашем коде это будет выглядеть примерно так:

private ComboBox _chashedComboBox; 

    private void dataGridView1_EditingControlShowing() 
    { 
     _chashedComboBox = e.Control as ComboBox; 
    } 

    private void dataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e) 
    { 
      var cmb = _chashedComboBox; 
      if(cmb != null) 
      { 
       cmb.DataSource = ds.Tables[0]; 
       cmb.DisplayMember = "Grd"; 
       cmb.ValueMember = "ID"; 

       if(cmb.Items.Count > 0) 
       cmb.SelectedIndex = 0; 
      } 
    } 
+0

Сэр, я пробовал в соответствии с вашим ответом, но получаю ошибку в 'dataGridView1_EditingControlShowing()', который не может наложить объект типа 'DataGridViewTextBoxEditingControl' на тип' ComboBox' –

+0

aah yeah - sry, мои действия были неправильными. не каждая ячейка содержит combobox. Теперь он просто вернет null вместо того, чтобы выбросить ошибку. попробуй. –

+0

Нажмите [здесь] (http://i.imgur.com/UQTznyK.png), чтобы увидеть сообщение об ошибке. –