2012-04-25 24 views
2

私のクライアントが所有するアプリケーションを作り直しています(元のアプリケーションを作成しなかったことを意味します)。要求の1つは、dataGridViews既存のデータベースから引き出されます)。問題は、このディスプレイが使用するデータテーブルでは、列の1つが特定の製品の使用のタイプを表し、通常の数で表されることです。これまでのところ、私のクライアントは、特定の数字が何を意味するのかを別の文書から読み取らなければなりませんでした。今では、私は数字を説明的な文字列に置き換えたいと思っています(どの数字がどの説明を参照しているかを示すリストを送ってくれました)が、データベースを変更することはできません。数値の代わりにテキストを表示するには、その列の内容(データベースではなく、dataGridViewのみ)を変更するにはどうすればよいですか?既存の値に応じてdataGridViewの値を変更する

おかげ

+0

DBを変更することは一切できません。あるいは、値フィールドのidフィールドを変更することはできません。 –

+0

データテーブルからデータを追加/読み込みできますが、新しいテーブルを追加したり、既存のテーブルのテーブル定義を変更したりすることはできません(これを行う最も簡単な方法は、数値と説明をリンクするデータテーブルを追加することです私はそれをすることはできません) – NDraskovic

答えて

2

これを行うための通常の方法はDataGridViewCellFormattingイベントを使用することです。 EventArgsのはあなたが唯一の正しい列をフォーマットすることを確実にするために使用することができますcolumnIndexにプロパティを持っている

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; 
    } 
} 

:ここ

は簡単な例です。

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

セルの書式設定イベントは、基礎となるデータには影響しません。したがって、データソースには整数が残ります。

このイベントのその他の情報は、MSDN hereです。

+0

あなたのコメントをありがとう、私は別の方法でそれを解決しました - 私は私のdataGridViewのDataSourceとして使用するDataTableにもう一つの列を追加しました。この列には、最初に変更したい列の数値に応じた文字列値があります。だから私はちょうどこの1つをディスパッチし、数値のものを隠すだけです。 – NDraskovic

関連する問題