我有一个数据库,虽然不是我设计的,但我必须使用它,其中包含一个类似这样的表格:
这个方法很好用,但是如果有大约1k甚至更多的项,它会花费很长时间...有没有更好的方法呢?
---编辑--- 这个方法本身很好用,我的问题是当数据表中有超过1000行时,它会花费很长时间。问题在于CellFormating事件会为每一列触发,即使不需要。比如我显示15列,并且有1000行,那么该事件就会触发15000次...
是否有比使用CellFormating事件更好的方法?或者是否有一种方法只将CellFormating事件添加到一个列中?或者其他什么方法?
id | 名称 | 状态 | ... -----+------------+----------+------ 1 | 产品1 | 2 | ... 2 | 产品2 | 2 | ... 3 | 产品3 | 3 | ... ... | ... | ... | ...状态属性是一个枚举类型,其中:
0 = 无效 1 = 开发 2 = 活动中 3 = 老产品当我在只读的datagridview中显示时,我希望用户看到枚举名称(开发,活动中,...)或描述,而不是数字值。datagridview绑定到来自数据访问层(DAL)的datatable,同样不是我设计的,所以我不能真正改变datatable。我找到的唯一方法是通过监听datagridview.CellFormatting事件,在其中放置此代码:
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甚至更多的项,它会花费很长时间...有没有更好的方法呢?
---编辑--- 这个方法本身很好用,我的问题是当数据表中有超过1000行时,它会花费很长时间。问题在于CellFormating事件会为每一列触发,即使不需要。比如我显示15列,并且有1000行,那么该事件就会触发15000次...
是否有比使用CellFormating事件更好的方法?或者是否有一种方法只将CellFormating事件添加到一个列中?或者其他什么方法?