いつもどこかでデスマーチ♪

不定期に、私の日常を書き込みしていきます。

DataGridView は奥が深い…

2012年05月24日 10時24分02秒 | .NET系
.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の前 イベントの順番

コメント (1)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« コマンドプロンプトで、アプ... | トップ | .netでIPアドレス取得 »

1 コメント

コメント日が  古い順  |   新しい順
Unknown (Unknown)
2015-05-07 15:18:34
今まで他のサイトで見た説明ではピンと来なかったのですが、この説明でよくわかりました。
返信する

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

.NET系」カテゴリの最新記事