我在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中的任何表?
答案 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保存,因此是奇怪的源字符串。