DataTable にバインドされたフォームで DataGridView を表示しようとしていますが、表示されません。私は C1TrueDBGrid を使用してこれを行っていましたが、それは機能していました... TrueDBGrid のいくつかの複雑さのため、DataGridView の使用に切り替えることにしました。何も表示されない理由を理解するのを手伝ってくれる人はいますか?
フォームで私はこれらを宣言します:
Public binData As DataSet
Friend WithEvents dgvData As System.Windows.Forms.DataGridView
binData には、別の計算ルーチンで作成されたテーブルが格納されます。次に、これはフォーム ロード イベントです。
'create a tab page and add data grid view for every table in the set
For i = 0 To binData.Tables.Count - 1
Dim tabPage As C1.Win.C1Command.C1DockingTabPage = New C1.Win.C1Command.C1DockingTabPage
tabPage.Text = binData.Tables(i).TableName
tabContent.TabPages.Add(tabPage)
Dim dgvData = New System.Windows.Forms.DataGridView
Dim binding As New BindingSource
binding.DataSource = binData.Tables(i)
With dgvData
.Dock = DockStyle.Fill
.AllowUserToOrderColumns = False
.AllowUserToAddRows = False
.AllowUserToDeleteRows = False
.DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomLeft
.DataSource = binding
.AutoGenerateColumns = True
End With
tabPage.Controls.Add(dgvData)
Next 'DataTable In binData.Tables
フォームが読み込まれると、タブ ページが表示され、期待どおりにラベル付けされますが、空 (テーブルなし) に見えます。
代わりに、DataSource を (特定のテーブルではなく) binData と呼ばれる DataSet に設定してから、dgvData の DataMember プロパティを表示したい特定のテーブルの名前に設定してみましたが、違いはありませんでした。
注: フォームが特定のデータセットで読み込まれるまで必要なグリッドの正確な数がわからないため、ビジュアル デザイナーを使用するのではなく、実行時にこれをプログラムで実行できるようにする必要があります。フォームが取得するデータセットの数は異なる可能性があります。ユーザーが望むものに応じたテーブルの。