根据现有值更改dataGridView中的值

时间:2012-04-25 11:50:53

标签: c# datagridview

我正在重新构建我的客户端拥有的应用程序(意味着我没有创建原始应用程序),其中一个请求是简化dataGridViews中显示的数据(数据来自现有数据库)。问题在于,在该显示器使用的数据表中,列之一表示某种产品的使用类型,并由普通数字表示。到目前为止,我的客户必须从另一个文档中读取具体数字的含义。现在他希望我用描述性的字符串替换数字(他给我发了一个列表,说明哪个数字指的是哪个描述),但我不允许改变数据库。如何更改该列的内容(仅在我的dataGridView中,而不是在数据库中)以显示文本而不是数字?

谢谢

1 个答案:

答案 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