【问题标题】:Populate data from dataset and show in datagridview从数据集中填充数据并在 datagridview 中显示
【发布时间】:2009-08-11 12:56:06
【问题描述】:

我在 VB.NET 中工作,我有一个简单的要求:

我已将一个 MDB 文件添加到 DataSet,它包含 21 个表。

我的表单上有一个 DataGridView 和一个 ComboBox。

通过迭代dataset.Tables,我能够使用 DataSet 中可用的表名填充 ComboBox。

现在我希望用户能够从 ComboBox 中选择表名,然后填充该表的内容。

我尝试了以下代码:

Datagridview1.DataSource = dataset1
Datagridview1.DataMember = dataset1.tables(combobox1.selecteditem)
Datagridview1.Refresh()

但我只得到了列标题。然后我读到我需要一个 TableAdapter 来使用该表填充 DataSet。但如果我使用 TableAdapter,我将无法以通用方式填充表格。

目前,如果我必须填充TableA,那么我将不得不创建一个Dataset1TableAdapters.TableA 的实例,然后使用它的.Fill 属性来填充表格。我还必须使用“Dataset1TableAdapters.TableB`。是否有通用方法来填充数据集中的任何表?

【问题讨论】:

  • 抱歉,我认为标签 generic-way-to-get-tablea 不应该保留...
  • 没有问题,我只是想提高问题的可见性。

标签: vb.net datagridview dataset


【解决方案1】:

以下内容对我有用:

Datagridview1.DataSource = dataset1.tables(combobox1.selecteditem)

【讨论】:

    【解决方案2】:

    C# 但很容易转换为 VB.Net(我想):

    String connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=""C:\test.mdb""";
    String tableName = combobox1.SelectedItem.ToString();
    String sqlSELECT = String.Format("select * from [{0}]", tableName);
    
    System.Data.OleDb.OleDbDataAdapter da = new System.Data.OleDb.OleDbDataAdapter();
    da.SelectCommand = new System.Data.OleDb.OleDbCommand(sqlSELECT, new System.Data.OleDb.OleDbConnection(connectionString));
    
    DataGridView1.DataSource = dataSet1;
    DataGridView1.DataMember = dataSet1.Tables(tableName);
    da.Fill(dataSet1, tableName);
    

    我只是在草拟一个证明“它可以以通用方式完成”来解决您的问题,您应该详细说明,也许可以提供更优雅(和安全)的东西。

    【讨论】:

    • 这个解决方案看起来很优雅,但是我可能会问为什么这样的事情不能通过现有的数据集来完成?如果表适配器所做的只是用表填充数据集,并且我们也指定了查询,那么也应该有一种方法可以通过数据集来完成..
    【解决方案3】:
    Private Sub BindData()
    
        With customersDataGridView
            .AutoGenerateColumns = True
            .DataSource = customersDataSet
            .DataMember = "Customers"
        End With
    
    End Sub
    

    【讨论】:

    • 想详细说明您的代码示例,特别是它与问题的关系吗?
    【解决方案4】:

    只是为了澄清这个答案。备查。

    Public Class Form1   
    Dim con As OleDbConnection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\test.accdb;")
    
    Private Sub Button1_Click
    
                Dim da As New OleDbDataAdapter
                Dim table As String = ComboBox1.SelectedItem.ToString
                Dim sql As String = String.Format("select * from [{0}]", table)
                da.SelectCommand = New OleDbCommand(sql, con)
                DataGridView1.DataSource = DataSet.Tables(table)
                da.Fill(DataSet, table)
    
    End Sub
    End Class
    

    不尝试复活,但我认为应该发布此 VB 脚本的工作版本。

    我想指出,数据集是由 Visual Studio 保存的,因此是奇怪的源字符串。

    【讨论】:

      猜你喜欢
      • 2012-04-30
      • 2018-12-20
      • 2023-03-07
      • 2013-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-11
      • 2016-11-11
      相关资源
      最近更新 更多