首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >绑定到DataTable的DataGridView未显示

绑定到DataTable的DataGridView未显示
EN

Stack Overflow用户
提问于 2015-05-04 23:39:04
回答 2查看 1.7K关注 0票数 0

我试图在绑定到DataTable的表单中显示DataGridView,但它没有显示出来。我是用C1TrueDBGrid来做这件事的,而且效果很好……由于TrueDBGrid的一些复杂问题,我决定改用DataGridView。谁能帮我弄清楚为什么什么都没显示?

在表单中,我声明了这些:

代码语言:javascript
复制
Public binData As DataSet
Friend WithEvents dgvData As System.Windows.Forms.DataGridView

binData中填充了通过单独的计算例程创建的表。然后是表单加载事件:

代码语言:javascript
复制
    '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属性设置为我希望在it...that中显示的特定表的名称没有任何区别。

注意:我需要能够在运行时以编程方式完成此操作,而不是使用可视化设计器,因为在窗体加载特定数据集之前,我不知道所需的确切网格数量-它获得的数据集可以具有不同数量的表,具体取决于用户的需要。

EN

回答 2

Stack Overflow用户

发布于 2015-05-05 06:55:47

下面是将dgv添加到流面板中的一些粗略代码:

代码语言:javascript
复制
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面板不会滚动,所以可能不是最好的选择--看看TableLayout的可能性。TabControl是另一种选择。

票数 0
EN

Stack Overflow用户

发布于 2015-05-05 21:14:10

好吧,事实证明我的所作所为没什么问题。问题出现在与绑定DGV数据源或任何内容无关的一行代码中。

ComponentOne有一个称为ThemeController的控件,您可以在其中为窗体和其中的控件设置主题。我有一行代码将dgvData的主题设置为我的默认应用程序主题(它设置视觉样式和有关颜色、字体等的细节)。不管是什么原因,这使得我的网格不可见。我会向他们登记一张罚单。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30034139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档