DataGridViewの列にコンボボックスを表示する方法
言語:VB2005
データベース:SQLServer 非接続型のデータアクセスです。
.net勉強中の初心者です。件名の件について悩んでいますのでご教授お願いします。
http://dobon.net/vb/dotnet/datagridview/datagridviewcomboboxcolumn.html
上記HPを参考に勉強しています。
DataGridViewComboBoxColumnを使用する方法ではうまく表示できましたが、
DataSourceプロパティを使用する方法ではうまくできません。
(1)の処理を行うとまず、ID 所属コード 所属名称 がDataGridViewにバインドされます。
そこに(2)の処理を行い 所属名称を コンボボックスに変更したいのですが、所属名称の後に
列名が空白のコンボボックスが新たに追加作成されてしまいます。
そして下記のエラーが発生します。
System.FormatException: DataGridViewComboBoxCell の値が有効ではありません
この既定のダイアログを置き換えるには、DataError イベントをハンドルしてください。
いったい何がおかしいのか???です。よろしくお願いします。
'****************************************
'(1)DataGridViewにデータをバインドする
'****************************************
strsql = "SELECT ID, 所属コード, t1.名称 as 所属名称 FROM ATBL LEFT OUTER JOIN BTBL ON ATBL.所属 = BTBL.コード ORDER BY ID"
Dim comm As SqlCommand = New SqlCommand(strsql, Con)
Dim dataadapter As SqlDataAdapter = New SqlDataAdapter(comm)
dataadapter.MissingSchemaAction = MissingSchemaAction.AddWithKey
Dim ds As DataSet = New DataSet()
dataadapter.Fill(ds, "テーブル")
dgrview.DataSource = ds
dgrview.DataMember = "テーブル"
'----------------------------------------------------------------------
'(2)DataGridViewにComboBoxを設定する(DataSourceプロパティを使用した例)
'----------------------------------------------------------------------
Dim DataSource As New DataTable("DataSource")
DataSource.Columns.Add("Value", GetType(String))
DataSource.Columns.Add("code", GetType(Integer))
DataSource.Rows.Add("", 0)
DataSource.Rows.Add("小学校", 1)
DataSource.Rows.Add("中学校", 2)
DataSource.Rows.Add("高校", 3)
Dim column As New DataGridViewComboBoxColumn()
column.DataPropertyName = "所属名称"
column.DataSource = DataSource
column.ValueMember = "code"
column.DisplayMember = "Value"
dgrview.Columns.Add(column)
お礼
khazad-leftyさん 回答ありがとうございました。 教えて頂いた方法でできました。