電子書籍の厳選無料作品が豊富!

vb2005です。

DataGridViewコントロールのデータセットにデータベースのテーブルをセットしています。
そのDataGridViewの1列目にコンボボックスを設定し、
そのコンボボックスのデータセットにも別のテーブルをセットしたいのです。

Dim dAdp As OleDb.OleDbDataAdapter
Dim dSet As New DataSet
Dim cn As OleDb.OleDbConnection = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=C:\DB.mdb;")

dAdp = New OleDb.OleDbDataAdapter("SELECT * FROM 商品", cn)
dAdp.Fill(dSet, "t_商品")

DataGridView1.DataSource = dSet.Tables("t_商品")

dAdp = New OleDb.OleDbDataAdapter("SELECT * FROM 品種", cn)
dAdp.Fill(dSet, "t_品種")

Dim col As System.Windows.Forms.DataGridViewComboBoxColumn = DataGridView1.Columns(1) ・・・・★
col.DataSource = dtSet.Tables("t_品種")

col.DisplayMember = "品種名"
col.ValueMember = "品種コード"


上記のように記述しているのですが、★の部分で、下記のエラーになります。
型 'System.Windows.Forms.DataGridViewTextBoxColumn' のオブジェクトを型 'System.Windows.Forms.DataGridViewComboBoxColumn' にキャストできません

データソースを指定したDataGridViewの列にはコンボボックス等の設定は
出来ないのでしょうか?

A 回答 (1件)

明示的に型宣言(Option Strict On)している場合は、ちゃんと


代入する型に合った型を代入するようにしないので、

Dim col As System.Windows.Forms.DataGridViewComboBoxColumn = CType(DataGridView1.Columns(1), DataGridViewComboBoxColumn)

と、してあげましょう。

この回答への補足

回答ありがとうございます。

ですが、上記のように記述しても同じエラーになります。

列定義をしたDataGridViewのデータセットにテーブルを指定すると、
定義した列の後に、テーブルの列が表示されてしまうので
あらかじめDataGridView1に対して列定義はしていません。
それが原因でしょうか?

よろしくお願いいたします。

補足日時:2007/10/15 09:12
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!