填充数据集中的数据并显示在datagridview中

时间:2009-08-11 12:56:06

标签: vb.net datagridview dataset

我在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”。是否有一个通用的方法来填充DataSet中的任何表?

4 个答案:

答案 0 :(得分:2)

以下对我有用:

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

答案 1 :(得分:1)

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);

我只是勾勒出一个证明“它可以通用的方式完成”你的问题,你应该详细说明,也许会有更优雅(和安全)的东西。

答案 2 :(得分:0)

Private Sub BindData()

    With customersDataGridView
        .AutoGenerateColumns = True
        .DataSource = customersDataSet
        .DataMember = "Customers"
    End With

End Sub

答案 3 :(得分:0)

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

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

没有尝试Ressurect,但我认为应该发布这个VB脚本的工作版本。

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