※ ChatGPTを利用し、要約された質問です(原文:VB2008・DataGridの表示について)
VB2008・DataGridの表示について
このQ&Aのポイント
VB2008・DataGridの表示についてのエラーについて解説します。
DataGridを使用してsqlcompactで作られたテーブルのデータを表示する際に表示できないエラーが発生します。
特定のカラムのみ表示し、ヘッダーを編集したい場合の方法について説明します。
フォーム上に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 で発生しました。
お礼
ありがとうございました
補足
>>MARU4812さん 回答ありがとうございました。 一応自己解決しました。 そもそも使い方がおかしかったわけですよね・・・ 次回からはもうちょっとよく考えるようにします。 ↓ 一応、回答 (誤)col(0).MappingName = "商品コード" (正)col(0).MappingName = "ryohincd" DBの列名を指定する (誤)dbtabl = New DataTable (正)dbtabl = New DataTable("表示用") マッピング名を指定してオブジェクト生成 (誤)Me.DataGrid_Display.DataSource = dbadp (正)Me.DataGrid_Display.DataSource = dbtabl データアダプタではなくて、データテーブルを指定