DOBON.NETプログラミング掲示板過去ログ
DataGridViewComboBoxColumnによるID取得
題名: DataGridViewComboBoxColumnによるID取得
著者: 雨河童
日時: 2013/08/18 13:03:19
ID: 31747
この記事の返信元:
(なし)
この記事への返信:
[31748]
Re[1]: DataGridViewComboBoxColumnによるID取得
魔界の仮面弁士
2013/08/19 2:57:59
ツリーを表示
環境/言語:[VB2008、Win7]
分類:[.NET]
お世話になります。
データベースプログラムを作成しております。
具体的には、DataGridViewにて生徒を複数名選択するというものです。
DataGridViewは生徒ID,氏名のテーブルをデータソースにセットし、
氏名列をDataGridViewComboBoxColumnに置き換えて選択できるようにしています。
DataGridViewComboBoxColumnのデータソースは生徒情報(生徒ID,氏名,生年月日,性別)をセットしています。
コンボボックスより生徒を選択する際の挙動ですが、
複数名の同名の生徒がリストに存在する場合、DataGridViewの生徒ID列に正しいIDがセットされない現象に困っています。
具体的なコードは以下の通りです。
dgv.DataSource = GetTableFromSQL("SELECT 生徒ID, 氏名 FROM 選択リスト")
Dim Column As New DataGridViewComboBoxColumn()
Column.DisplayStyleForCurrentCellOnly = True
Column.DisplayMember = "氏名"
Column.ValueMember = "生徒ID"
Column.DataSource = GetTableFromSQL("SELECT 生徒ID, 氏名, 生年月日, 性別 FROM 生徒テーブル")
Column.DataPropertyName = "生徒ID"
Column.SortMode = DataGridViewColumnSortMode.Automatic
dgv.Columns.Insert(dgv.Columns("氏名").Index, Column)
'dgv.Columns.Remove("氏名")
Column.Name = "氏名"
コードが悪いのでしょうか?
解決策への知恵をお貸しいただけると幸いです。
どうぞよろしくお願いします。
題名: Re[1]: DataGridViewComboBoxColumnによるID取得
著者: 魔界の仮面弁士
日時: 2013/08/19 2:57:59
ID: 31748
この記事の返信元:
[31747]
DataGridViewComboBoxColumnによるID取得
雨河童
2013/08/18 13:03:19
この記事への返信:
(なし)
ツリーを表示
■No31747に返信(雨河童さんの記事)
> 具体的には、DataGridViewにて生徒を複数名選択するというものです。
生徒名だけから選ばせるのではなく、「31747:雨河童」のようにした
IDと名前の組み合わせとなる列を用意するのが、手っ取り早いかとおもいます。
> 複数名の同名の生徒がリストに存在する場合、
同名だった場合、いずれの生徒IDを指しているのか曖昧になので、
位置だけで判断させるのではなく、アイテムの内容を工夫した方が良いでしょう。
後ろ向きな回答ではありますが、「同名を作らない」ようにすることをお勧めします。
> DataGridViewの生徒ID列に正しいIDがセットされない現象に困っています。
DataGridViewComboBoxColumn … というか、DataGridViewComboBoxCell についていえば、
そもそも SelectedIndex プロパティや SelectedValue プロパティがありません。
現在のセルテキストから、コンボボックスのアイテムが逆選択されことになるため、
同名アイテムがある場合、必ずしも望むべき生徒IDが選択される保証はありません。
一応、コンボボックスそのもの(DataGridViewComboBoxEditingControl)を
EditingControlShowing 等から得ることは出来ますが、そこから SelectedIndex を
得たところで、直接の回避策にはなりえないでしょうね。
DOBON.NET
|
プログラミング道
|
プログラミング掲示板
分類:[.NET]
お世話になります。
データベースプログラムを作成しております。
具体的には、DataGridViewにて生徒を複数名選択するというものです。
DataGridViewは生徒ID,氏名のテーブルをデータソースにセットし、
氏名列をDataGridViewComboBoxColumnに置き換えて選択できるようにしています。
DataGridViewComboBoxColumnのデータソースは生徒情報(生徒ID,氏名,生年月日,性別)をセットしています。
コンボボックスより生徒を選択する際の挙動ですが、
複数名の同名の生徒がリストに存在する場合、DataGridViewの生徒ID列に正しいIDがセットされない現象に困っています。
具体的なコードは以下の通りです。
dgv.DataSource = GetTableFromSQL("SELECT 生徒ID, 氏名 FROM 選択リスト")
Dim Column As New DataGridViewComboBoxColumn()
Column.DisplayStyleForCurrentCellOnly = True
Column.DisplayMember = "氏名"
Column.ValueMember = "生徒ID"
Column.DataSource = GetTableFromSQL("SELECT 生徒ID, 氏名, 生年月日, 性別 FROM 生徒テーブル")
Column.DataPropertyName = "生徒ID"
Column.SortMode = DataGridViewColumnSortMode.Automatic
dgv.Columns.Insert(dgv.Columns("氏名").Index, Column)
'dgv.Columns.Remove("氏名")
Column.Name = "氏名"
コードが悪いのでしょうか?
解決策への知恵をお貸しいただけると幸いです。
どうぞよろしくお願いします。