VB2008・DataGridの表示について
フォーム上にDataGridを設置してsqlcompactで作られたテーブルのデータを表示しようとして
以下のソースを実行すると、エラーになり表示できませんでした。
もし、原因がわかるかたがいらっしゃいましたら教えてくださると助かります。
表示するにあたり、テーブルの特定のカラムだけ表示して、ヘッダーを編集したい。
テーブルの全レコードではなくて対象レコードのみを表示
Dim cn As New System.Data.SqlServerCe.SqlCeConnection
Dim SQL As System.Data.SqlServerCe.SqlCeCommand
Dim db_sql As String
' テーブルスタイルを生成する
Dim dgStyle As DataGridTableStyle = New DataGridTableStyle()
dgStyle.MappingName = "表示用テーブル"
' 列スタイルを生成し、プロパティを設定する
Dim col(4) As DataGridTextBoxColumn
col(0) = New DataGridTextBoxColumn()
col(0).HeaderText = "商品コード"
col(0).MappingName = "商品コード"
col(0).Width = 50
col(1) = New DataGridTextBoxColumn()
col(1).HeaderText = "商品名"
col(1).MappingName = "商品名"
col(1).Width = 100
' 列スタイルをテーブルスタイルに追加する
dgStyle.GridColumnStyles.Add(col(0))
dgStyle.GridColumnStyles.Add(col(1))
' テーブルスタイルをグリッドに追加する
Me.DataGrid_Display.TableStyles.Clear()
Me.DataGrid_Display.TableStyles.Add(dgStyle)
'DBのパスをセットしてオブジェクト化
cn.ConnectionString = "Data Source=" & DB_PATH & ";Password=" & DB_PASSWORD & ";Persist Security Info=True;"
SQL = cn.CreateCommand
'データグリッドを表示する
Dim dbadp As System.Data.SqlServerCe.SqlCeDataAdapter
Dim dbtabl As DataTable
Dim aa As DataSet
db_sql = "SELECT syohinno, syohinryaku, suryo1, suryo2, suryo3 FROM porsj05_tempo ORDER BY date DESC"
dbadp = New SqlCeDataAdapter(db_sql, cn)
dbtabl = New DataTable
dbtabl.Locale = System.Globalization.CultureInfo.InvariantCulture
dbadp.Fill(dbtabl)
Me.DataGrid_Display.DataSource = dbadp
Me.DataGrid_Display.Refresh()
エラー箇所
Me.DataGrid_Display.DataSource = dbadp
エラー内容
Complex DataBinding は IList または IListSource のどちらかをデータソースとして受け入れます。
'System.ArgumentException' の初回例外が System.Windows.Forms.dll で発生しました。
お礼
ape5様 やはりClear()メソッドを使用するタイミングがちょっと違ったみたいで、もう一度やり直したらうまくいきました。 ありがとうございました。 これからもよろしくお願いいたします。
補足
ape5様 ちなみに再表示する際、同じDataGridのデータ設定メソッドを 使用するので、データ設定メソッドの前でClear()メソッドを 使用すればよろしいですか? Clear()メソッドを使うタイミングを教えてください。 よろしくお願いいたします。