2

クライアントが所有するアプリケーションを作り直しています(つまり、元のアプリケーションを作成していません)。リクエストの1つは、dataGridViewsの1つに表示されるデータを単純化することです(データは既存のデータベースから取得されます)。問題は、このディスプレイが使用するデータテーブルで、列の1つが特定の製品の使用法のタイプを表し、通常の数値で表されることです。これまでのところ、私のクライアントは別のドキュメントから特定の番号が何を意味するのかを読まなければなりませんでした。今、彼は私に番号を説明的な文字列に置き換えることを望んでいます(彼は私にどの番号がどの説明を参照しているかを説明するリストを送ってくれました)が、データベースを変更することは許可されていません。その列のコンテンツを(データベースではなく、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プロパティがあり、これを使用して、正しい列のみをフォーマットするようにすることができます。

注意すべき点の1つは、このセルの書式設定イベントは、セルがペイントされるたびに発生するため、イベントハンドラーで重い作業を行わないようにする必要があるということです。たとえば、値のdbルックアップは大きな間違いです!代わりに、これをメモリ内の辞書に保存してください。

セルの書式設定イベントは基になるデータに影響を与えないため、データソースには整数が含まれます。

このイベントの詳細については、MSDNのこちらをご覧ください。

于 2012-04-25T23:07:00.500 に答える