在没有VirtualMode的情况下更改DataGridView中的值

时间:2015-03-13 13:32:32

标签: c# datagridview

我正在努力从VirtualMode删除DataGridView(它无法正常工作,我决定转而使用分页网格视图)并且一切正常。

只有一件事仍然缺失。我的数据集有enum个,它们直接从数据库中查询,因此只有英文版本。我想在de DataGridView中翻译这些数据。我可以调用一些处理程序来转换数据源中的数据吗?

(在VirtualMode我实施了CellValueNeeded,也处理了翻译;当虚拟模式关闭时,此事件不再被触发。)

1 个答案:

答案 0 :(得分:2)

我做过这样的事情,在dataGridView中处理CellFormatting事件,而不更改底层数据

private void Grid_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if (e.ColumnIndex != 2) // enum value column
        return;

    var grid = (DataGridView)sender;
    MyEnum val = (MyEnum)grid[e.ColumnIndex, e.RowIndex].Value;
    switch (val)
    {
        case MyEnum.Val1: e.Value = "Translation1"; break;
        case MyEnum.Val2: e.Value = "Translation2"; break;
    }

    e.FormattingApplied = true;
}

这仅显示列№2

的单元格中MyEnum值的翻译