2

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

谢谢

4

1 回答 1

2

通常的方法是CellFormatting使用DataGridView.

这是一个简单的例子:

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 上。

于 2012-04-25T23:07:00.500 回答