积极答复者
DataGridViewComboBoxColumn 绑定数据源发生dataerror错误

问题
-
想在DataGridViewComboBoxColumn datasource 中绑定一个自定义数据源List<BindEntity>,例子中由 EZGasSupportTypeInfo.GetComStationTypeInfo()返回这个数据源。BindEntity.Value在这里存的是枚举。Name是这个枚举对应的中文名称。在下面的例子里我想在datatable中的column1列中存入枚举值,但在datagridview界面上显示中文信息。可是总是失败。会发生DataError错误 其中异常具体信息为:cell value 不合法。。。
我该怎么办才能成功绑定这个数据源
class BindEntity
{
public string Name {get}
public object Value {get}
}
public enum ComStationType
{
PCPSYS,
ESPSYS,
...
}
DataGridViewComboBoxColumn dgvc = new DataGridViewComboBoxColumn();
dgvc.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing;
dgvc.DataPropertyName = "column1";
dgvc.DataSource = EZGasSupportTypeInfo.GetComStationTypeInfo()(是一个List<BindEntity>);
dgvc.DisplayMember = "Name";
dgvc.ValueMember = "Value";
this.dataGridView1.Columns.Add(dgvc);
DataTable dt = new DataTable();
dt.Columns.Add("column1", typeof(ComStationType));
DataRow dr = dt.NewRow();
dr[0] = ComStationType.ESPSYS;
dt.Rows.Add(dr);
this.dataGridView1.DataSource = dt;
shan423
- 已编辑 shan423 2012年12月13日 9:17
答案
-
枚举的本质是数值。因此你的Value建议是枚举类型而不是object的。这样修改:
dr[0] = (int)ComStationType.ESPSYS;
- 已建议为答案 Jason Dot WangModerator 2012年12月14日 6:13
- 已标记为答案 shan423 2012年12月18日 3:08
全部回复
-
还要执行dataGridView1.Databand()方法。
family as water
- 已建议为答案 Jason Dot WangModerator 2012年12月14日 6:13
- 已标记为答案 Jason Dot WangModerator 2012年12月21日 8:36
- 取消答案标记 Jason Dot WangModerator 2012年12月21日 8:36
- 取消建议作为答案 Jason Dot WangModerator 2012年12月21日 8:36
-
枚举的本质是数值。因此你的Value建议是枚举类型而不是object的。这样修改:
dr[0] = (int)ComStationType.ESPSYS;
- 已建议为答案 Jason Dot WangModerator 2012年12月14日 6:13
- 已标记为答案 shan423 2012年12月18日 3:08