c# – 如何在datagridview列中显示枚举值
发布时间:2020-12-15 04:28:01 所属栏目:百科 来源:网络整理
导读:我有这个数据库,不是我的设计,但我必须使用它,它包含一个像这样的表: id | Name | status | ...-----+------------+----------+------ 1 | Product1 | 2 | ... 2 | Product2 | 2 | ... 3 | Product3 | 3 | ... ... | ... | ... | ... status属性是指枚举所
我有这个数据库,不是我的设计,但我必须使用它,它包含一个像这样的表:
id | Name | status | ... -----+------------+----------+------ 1 | Product1 | 2 | ... 2 | Product2 | 2 | ... 3 | Product3 | 3 | ... ... | ... | ... | ... status属性是指枚举所在的位置 0 = Invalid 1 = Dev 2 = Activ 3 = Old 当我在只读数据网格视图中显示它时,我希望用户看到枚举的名称(Dev,Activ,…)或描述而不是数值. datagridview绑定到来自DAL的数据表,同样不属于我的设计,因此我无法真正更改数据表.我发现如何做到这一点的唯一方法是通过监听datagridview.CellFormating事件,我把这个代码: private void dataGridView_CellFormatting(object sender,DataGridViewCellFormattingEventArgs e) { if (e.ColumnIndex == 3) // column of the enum { try { e.Value = getEnumStringValue(e.Value); } catch (Exception ex) { e.Value = ex.Message; } } } 这工作正常,但如果我有大约1k(不是那么多)或更多的项目,它需要永远…… – -编辑 – – 有没有比使用CellFormating事件更好的方法?或者有没有办法将CellFormating事件添加到一个列?或者是什么 ? 解决方法
我不会在CellFormatting上做到这一点.我会攻击DataTable本身.我会添加一个具有枚举类型的行,并通过表循环并添加值.像这样的东西:
private void Transform(DataTable table) { table.Columns.Add("EnumValue",typeof(SomeEnum)); foreach (DataRow row in table.Rows) { int value = (int)row[1]; //int representation of enum row[2] = (SomeEnum)value; } } 然后,在DataGridView中,只隐藏具有枚举的整数表示的列. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |