Vb.net 绑定到DataTable的DataGridView未显示
我试图以绑定到DataTable的形式显示DataGridView,但它没有显示出来。我使用的是C1TrueDBGrid,这很有效……由于TrueDBGrid的一些复杂性,我决定改用DataGridView。有人能帮我弄清楚为什么什么都没出现吗 以本人声明的形式:Vb.net 绑定到DataTable的DataGridView未显示,vb.net,winforms,datagridview,datatable,truedbgrid,Vb.net,Winforms,Datagridview,Datatable,Truedbgrid,我试图以绑定到DataTable的形式显示DataGridView,但它没有显示出来。我使用的是C1TrueDBGrid,这很有效……由于TrueDBGrid的一些复杂性,我决定改用DataGridView。有人能帮我弄清楚为什么什么都没出现吗 以本人声明的形式: Public binData As DataSet Friend WithEvents dgvData As System.Windows.Forms.DataGridView binData由通过单独的计算例程创建的表填充。那么这
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
当表单加载时,选项卡页面在那里并按预期标记,但它们看起来是空的(没有表)
我确实尝试将数据源设置为名为binData的数据集(与特定表相反),然后将dgvData的DataMember属性设置为要在其中显示的特定表的名称……这没有什么区别
注意:我需要能够在运行时以编程方式执行此操作,而不是使用可视化设计器,因为在表单加载特定数据集之前,我不知道所需的网格的确切数量-它获得的数据集可以有不同数量的表,这取决于用户想要什么。下面是一些将DGV添加到流程面板:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Static dgvCount As Integer
dgvCount += 1
Dim dgvNew As New DataGridView
dgvNew.Width = DataGridView1.Width
dgvNew.Height = DataGridView1.Height
dgvNew.Name = "dgv" & dgvCount
' clone other properties as need
FlowLayoutPanel1.Controls.Add(dgvNew)
Debug.Print(FlowLayoutPanel1.Controls(FlowLayoutPanel1.Controls.Count - 1).Name)
End Sub
以一个dgv-DataGridView1作为属性的模型开始。“流”面板中的锚定不起作用,因此可能需要更改某些自定义代码的宽度
Flow panel不会滚动,因此可能不是最佳选择-可以查看TableLayout。TabControl是另一个选项。好吧,事实证明我所做的一切都没有错。问题出现在一行代码中,与绑定DGV的数据源或任何内容无关
ComponentOne有一个名为ThemeControl的控件,您可以在其中为窗体和其中的控件设置主题。我有一行代码将dgvData的主题设置为我的默认应用程序主题(设置视觉样式和有关颜色、字体等的详细信息)。不管出于什么原因,这使得我的网格不可见。我将与他们一起记录一个票证。您正在将bindingsource的数据源设置为表,但没有将网格本身的数据源设置为任何内容。@Jeremy-在with块中,我设置了dgvData的。数据源=binding。要使网格的数据源成为表,我还需要做更多的工作吗?dgvData应该是窗体(GUI)上的控件,而不是变量。删除dgvData的Dim/Friend语句,并从工具箱中的“数据”文件夹中向窗体添加控件。@rheitzmann-难道我不能以编程方式创建控件并将其添加到窗体吗?正如我所说,使用C1TrueDBGrid(ComponentOne的第三方控件)可以很好地工作。只是它们的控件的属性和行为不同…所以我不确定DataGridView缺少什么…尽管这确实提示我在“Dim dgvData=New System.Windows.Forms.DataGridView”的表单加载事件中去掉“Dim”。不幸的是,这没有什么区别(