DataGridView は奥が深い…

.NET で、DataGridViewを使うことが多いんだけど、
下記の例をやる方法がやっとでわかったのでメモする。

1.DBには「1,2,3,4,5…」と数字になっているが、画面は「あ、い、う、え、お…」と表示させたい。
2.ユーザーには「あ、い、う、え、お…」と入力させ、DBには「1,2,3,4,5…」と更新させたい


このような場合、DataGridViewの「CellFormatting」イベントと「CellParsing」イベントを使う


1.DataTableには、DBの値(数字)がそのまま入力されている。
2.DataGridView.DataSource = DataTable として、いつも通りに紐付ける。

3.「DataGridViewの.CellFormatting」を実装する。
コレで、画面上のデータグリッドには変換後の値が表示される。

実装例:
If e.Value.ToString() = "1" Then
    e.Value = "あ"
End If



4.「DataGridViewの.CellParsing」を実装する。
コレで、ユーザーが入力した値を、DB用に変換する。
値の入れ替えが終ったら、必ず「e.ParsingApplied = True」を設定すること。
設定しないと反映されません。

実装例:
If e.Value.ToString() = "あ" Then
    e.Value = "1"
End If
e.ParsingApplied = True



参考URL:
http://dobon.net/vb/dotnet/datagridview/cellparsing.html

覚えておこうっ!!!


ちなみに、下記順番でイベントが発生したっぽい。
(表示されているイベントしか試してないので、他のものがある可能盛大)
下記イベント順は参考です。信用しないでね。
Tabキー移動の場合:
dgvList_CellLeave
dgvList_CellParsing
dgvList_CellValueChanged

マウスで、セルをクリック:
dgvList_CellLeave
dgvList_CellParsing
dgvList_CellValueChanged



検索用:
DataGridView CellFormatting CellParsing 入力 値を変換する 値を変更する
Validatingの前 Validatedの前 イベントの順番

コメント

このブログの人気の投稿

ヨドバシカメラの店舗購入履歴を見るには…

C# の WPF の DataGrid で 行を交互に背景色を変える+選択色を変える+カラムが無い所も変える…

Visual Studio の ホットリロードが動かない場合に確認するところ