【问题标题】:Not able to find "SelectedIndex" property of DataGridViewComboBoxColumn in Visual Studio 2010在 Visual Studio 2010 中找不到 DataGridViewComboBoxColumn 的“SelectedIndex”属性
【发布时间】:2013-04-04 12:51:39
【问题描述】:

我是 Windows 窗体应用程序开发的新手。

我正在使用可编辑的网格视图来输入数据。

网格视图中的一个字段是 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.
}

请帮助解决这个问题。

提前致谢。

【问题讨论】:

  • cmb.SelectedItem。你在找这个吗?
  • 是的,但我既没有找到 cmb.SelectedItem 也没有找到 cmb.SelectedIndex @FaisalHafeez
  • cmb.Value 或 cmb.DisplayMember.
  • @RiyazKalva 您是否尝试将其转换为常规组合框:(ComboBox)(dataGridView1.Rows[e.RowIndex].Cells[1]);
  • @RiyazKalva 好的。尝试按照建议处理DataGridView.EditingControlShowing 事件here

标签: c# winforms visual-studio-2010 selectedindex datagridcomboboxcolumn


【解决方案1】:

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

【讨论】:

  • 先生,我按照您的回答进行了尝试,但在dataGridView1_EditingControlShowing() 中出现错误,即无法将DataGridViewTextBoxEditingControl 类型的对象转换为ComboBox 类型
  • 啊是的 - 对不起,我的演员阵容错了。并非每个单元格都包含一个组合框。现在它只会返回 null 而不是抛出错误。试试看。
  • @RiyazKalva 我已经更新了答案。问题还在吗?
  • 先生,我尝试了您更新的答案,程序没有给出错误,但没有从数据集中获取记录。我调试了程序,它显示控制没有进入dataGridView1_CellBeginEdit()@JensKloster
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-20
  • 2014-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-13
相关资源
最近更新 更多