日期:2014-05-18  浏览次数:20950 次

datagridview控件中的DataGridViewComboBoxColumn使用时如何获取到下拉选项的SelectedIndex值
一般我们在使用ComboBox时,会先给其添加items,其中的items通常又会是一个枚举。
此处举例用:
public enum Criterion
{
Pass,
Fail,
UpLimit,
DownLimit
}
再生成一个枚举型的变量 private Criterion m_eCriterion
然后再根据其下拉的选项来使用,单独的ComboBox有SelectedIndex属性,获取所选的枚举值用 m_eCriterion = (Criterion)combox1.SelectedIndex;即可实现。

但是当这个ComboBox在Datagridview控件中,情况就不一样了。可以通过datagridview1.Rows[i].cell[0].Value.ToString()来得到这个所选的字符串,却得不到其SelectedIndex值,最初我想用(ComboBox)datagridview1.Rows[i].cell[0]来进行强制转换,但没有成功,没办法只好把上面得到的字符串再进行Switch,在每个case中进行枚举型的赋值,我想这肯定不是一个好的方案,请各位大虾出出主意。

------解决方案--------------------
combox cb = (ComboBox)datagridview1.Rows[i].cell[0].findControl("combox控件明")
int index=cb.selectIndex;

好像是这样的吧,你试试
------解决方案--------------------
设置DataGridViewComboBoxColumn的DisplayMember和ValueMember分别为显示的字符串和对应的枚举值。
------解决方案--------------------
帮顶
------解决方案--------------------
学习,帮顶!
------解决方案--------------------
为什么不用DataGridViewComboBoxColumn
------解决方案--------------------
帮顶。
------解决方案--------------------
combox不是有SelectedText和SelectedItem这个属性吗,既然在datagrid里面你试试看。
------解决方案--------------------
帮顶
------解决方案--------------------
學習了
幫頂~
------解决方案--------------------
this.column1.Items.IndexOf(this.dataGridView1.Rows[i].Cells[0].Value)
其中column1为DataGridViewComboBoxColumnName,这样子就ok了