.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」を実装する。
コレで、画面上のデータグリッドには変換後の値が表示される。
実装例:
4.「DataGridViewの.CellParsing」を実装する。
コレで、ユーザーが入力した値を、DB用に変換する。
値の入れ替えが終ったら、必ず「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.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の前 イベントの順番