DataGridViewComboBoxColumn 数据绑定

Allblus 2018-01-12 02:08:03


//我有一个枚举类型:
public enum E_DIRECTION
{
DEFAULT,
INVERSE
}

//然后我把这个枚举类型绑定到datagridview第一列
DataTable dtDireciton = new DataTable();
dtDireciton.Columns.Add("String", typeof(string));
dtDireciton.Columns.Add("Value", typeof(E_DIRECTION));

arow = dtDireciton.NewRow();
arow[0] = "默认";
arow[1] = E_DIRECTION.DEFAULT;
dtDireciton.Rows.Add(arow);
arow = dtDireciton.NewRow();
arow[0] = "反向";
arow[1] = E_DIRECTION.INVERSE;
dtDireciton.Rows.Add(arow);

DataGridViewComboBoxColumn combox;
combox = dgvAxisData.Columns[0] as DataGridViewComboBoxColumn;
combox.DataSource = dtDireciton;
combox.DisplayMember = "String";
combox.ValueMember = "Value";

//然后我有一个枚举变量给datagridview第一行的这一列单元格赋值
E_DIRECTION mydir = E_DIRECTION.INVERSE;
dgvAxisData.Rows[0].Cells[0].Value = mydir ;

//问题是:为什么初始化显示没问题,当我点击这个ComboBox下拉单元格的时候,总是报错呢?
//报错信息是:DataGridViewComboBoxCell值无效。

...全文
438 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Allblus 2018-01-12
  • 打赏
  • 举报
回复
引用 3 楼 guwei4037 的回复:
winform datagridview combobox http://blog.csdn.net/m_buddy/article/details/53320606
谢谢,我用这个实现是可以,但我的写法原因没找到:(
Allblus 2018-01-12
  • 打赏
  • 举报
回复
谢谢,但 不是这个原因。
引用 5 楼 daixf_csdn 的回复:
可能是跟这个字段的类型相关,枚举绑定到grid上,实际枚举值的值,是是int类型,而不是枚举值。你将: dgvAxisData.Rows[0].Cells[0].Value = mydir ; 改为 dgvAxisData.Rows[0].Cells[0].Value = 1; 试试,如果不出错,那就是原因了。 另外,这种实现方式越来越少的人用了,我就是在学c#的时候,看教学视频看过,实际开发中从来没用过。没人回答可能也是太古老的东西,用的人少。
圣殿骑士18 2018-01-12
  • 打赏
  • 举报
回复
可能是跟这个字段的类型相关,枚举绑定到grid上,实际枚举值的值,是是int类型,而不是枚举值。你将: dgvAxisData.Rows[0].Cells[0].Value = mydir ; 改为 dgvAxisData.Rows[0].Cells[0].Value = 1; 试试,如果不出错,那就是原因了。 另外,这种实现方式越来越少的人用了,我就是在学c#的时候,看教学视频看过,实际开发中从来没用过。没人回答可能也是太古老的东西,用的人少。
Allblus 2018-01-12
  • 打赏
  • 举报
回复
public enum E_DIRECTION { DEFAULT , INVERSE } **************************************************************************************************************** 最终问题就是这个:对于上面的这个枚举类型,下面的写法绑定到datagridview的下拉框中为什么不行呢? **************************************************************************************************************** DataTable dtDireciton = new DataTable(); dtDireciton.Columns.Add("String", typeof(string)); dtDireciton.Columns.Add("Value", typeof(E_DIRECTION)); dtDireciton.Rows.Add("默认", E_DIRECTION.DEFAULT); dtDireciton.Rows.Add("反向", E_DIRECTION.INVERSE); DataGridViewComboBoxColumn combox; combox = dataGridView1.Columns[0] as DataGridViewComboBoxColumn; combox.DataSource = dtDireciton; combox.DisplayMember = "String"; combox.ValueMember = "Value";
全栈极简 2018-01-12
  • 打赏
  • 举报
回复
Allblus 2018-01-12
  • 打赏
  • 举报
回复
是我没讲清楚还是这样实现不了? 怎么一个人都没有回复呢?
Allblus 2018-01-12
  • 打赏
  • 举报
回复


DataTable dtDireciton = new DataTable();
            dtDireciton.Columns.Add("String", typeof(string));
            dtDireciton.Columns.Add("Value", typeof(E_DIRECTION));

            DataRow arow = dtDireciton.NewRow();
            arow[0] = "默认";
            arow[1] = E_DIRECTION.DEFAULT;
            dtDireciton.Rows.Add(arow);
            arow = dtDireciton.NewRow();
            arow[0] = "反向";
            arow[1] = E_DIRECTION.INVERSE;
            dtDireciton.Rows.Add(arow);

            DataGridViewComboBoxColumn combox;
            combox = dataGridView1.Columns[0] as DataGridViewComboBoxColumn;
            combox.DataSource = dtDireciton;
            combox.DisplayMember = "String";
            combox.ValueMember = "Value";

            E_DIRECTION mydir = E_DIRECTION.INVERSE;
            int index = dataGridView1.Rows.Add();
            dataGridView1.Rows[index].Cells[0].Value = mydir;

代码如上,怎样给dataGridView1的这个下拉列表框单元格赋值呢?

110,500

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧