从存储过程填充DataGridView

时间:2009-12-18 12:01:02

标签: .net sql sql-server vb.net dataset

使用SQL Server 2008我创建了一个名为MyStoreProc的存储过程,它可以从管理工具中正常运行。

在VB.Net 2008中,我创建了一个新的数据集和一个新的TableAdaptor。在这个表适配器中,我创建了一个名为FillByGrid的新Query,并选择了存储过程。预览数据并正确预览。

在表单上,​​我创建了DataGridView,并从数据集中选择了表适配器。

我运行了应用程序,但未显示任何数据。 Visual Studio自动处理下面的代码,我将其更改为选择刚创建的查询:

Me.MyTableAdapter.FillByGrid(Me.MyDataset.MyTableAdaptor)

网格上没有显示数据,所以我尝试了手动方法:

' Create the dataset
Dim da As New SqlDataAdapter, ds As New DataSet
Dim conn As New SqlConnection

conn.ConnectionString = opsData.DBConn.ConnectionString
da.SelectCommand = New SqlCommand
da.SelectCommand.Connection = conn
da.SelectCommand.CommandType = CommandType.StoredProcedure
da.SelectCommand.CommandText = "dbo.MyStoreProc"
da.Fill(ds, "tbl1")
DataGridView2.DataSource = ds.Tables("tbl1")

仍未显示数据。然而,单步执行我可以看到连接已打开,并且“da.Fill(ds,”tbl1“)”在运行存储过程时需要一点时间,并且ds表具有正确的行数和列数。它只是没有显示在数据网格上。

在数据集中创建另一个表适配器,并使用标准select * from table命令从数据表中返回数据,并在datagridview中显示。

有人有任何建议吗?

谢谢

3 个答案:

答案 0 :(得分:3)

我设法让这个现在开始。以下是我的所作所为。感谢大家的帮助。它把我推向正确的方向。

Dim strCon As String = myConnectionString
Dim strSQL As String = "dbo.MyStoreProc"
Dim dataAdapter As New SqlClient.SqlDataAdapter(strSQL, strCon)
Dim table As New DataTable
dataAdapter.Fill(table)
DataGridView1.DataSource = table

答案 1 :(得分:1)

尝试DataGridView2.DataBind();最后

答案 2 :(得分:0)

似乎有丰富的资源可用于如何做到这一点。最好的来源是:http://www.asp.net/learn/data-access/ -

没有一个好的老式search yields lots too