我正在重新构建我的客户端拥有的应用程序(意味着我没有创建原始应用程序),其中一个请求是简化dataGridViews中显示的数据(数据来自现有数据库)。问题在于,在该显示器使用的数据表中,列之一表示某种产品的使用类型,并由普通数字表示。到目前为止,我的客户必须从另一个文档中读取具体数字的含义。现在他希望我用描述性的字符串替换数字(他给我发了一个列表,说明哪个数字指的是哪个描述),但我不允许改变数据库。如何更改该列的内容(仅在我的dataGridView中,而不是在数据库中)以显示文本而不是数字?
谢谢
答案 0 :(得分:2)
执行此操作的常用方法是使用DataGridView
的{{3}}事件。
这是一个简单的例子:
dataGridView1.CellFormatting += new DataGridViewCellFormattingEventHandler(dataGridView1_CellFormatting);
void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (e.Value == null)
return;
string stringValue = (string)e.Value;
stringValue = stringValue.ToLower();
if (e.Value == "1")
{
e.Value = "string for one";
e.FormattingApplied = true;
}
}
eventargs有一个ColumnIndex属性,您可以使用它来确保只格式化正确的列。
需要注意的是,每当单元格绘制时都会引发此单元格格式化事件,因此您不应在事件处理程序中执行繁重的工作。例如,对您的值进行数据库查找将是一个很大的错误!而是将其存储在内存字典中。
单元格格式化事件不会影响基础数据,因此您的数据源中仍将包含整数。
有关此活动的更多信息,请访问MSDN CellFormatting
。