单击按钮时如何在ASP.NET 4.0中的Gridview上显示数据?

时间:2012-09-16 12:23:13

标签: asp.net .net vb.net

Imports System.Data.Odbc
Imports System.Data
Partial Class VIEW_SALARY_DETAILS
     Inherits System.Web.UI.Page

   Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
    Dim cons, query As String
    Dim con As OdbcConnection
    Dim adpt As OdbcDataAdapter
    cons = "dsn=Courier; UID=Courier; PWD=123;"
    con = New OdbcConnection(cons)
    con.Open()
    query = "select * from EMPLOYEE"
    Dim ds As DataSet
    adpt = New OdbcDataAdapter(query, con)
    ds = New DataSet
    adpt.Fill(ds, "Courier")
    GridView1.DataSource = ds.Tables()
    con.Close()
   End Sub
End Class

我写了上面的代码,但它没有显示数据。 在VB.NET应用程序中也可以这样做。 我们如何为ASP.net 4.0做到这一点?

3 个答案:

答案 0 :(得分:0)

您需要调用DataBind()方法。试试这个

GridView1.DataSource = ds.Tables()
DataBind()

答案 1 :(得分:0)

你错过了一行

GridView1.DataSource = ds.Tables[0]   //do some correction here..

GridView1.DataBind();        // add this line

您需要将GridView与数据源绑定..

您的代码将是

Imports System.Data.Odbc
Imports System.Data
Partial Class VIEW_SALARY_DETAILS
     Inherits System.Web.UI.Page

   Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
    Dim cons, query As String
    Dim con As OdbcConnection
    Dim adpt As OdbcDataAdapter
    cons = "dsn=Courier; UID=Courier; PWD=123;"
    con = New OdbcConnection(cons)
    con.Open()
    query = "select * from EMPLOYEE"
    Dim ds As DataSet
    adpt = New OdbcDataAdapter(query, con)
    ds = New DataSet
    adpt.Fill(ds, "Courier")
    GridView1.DataSource = ds.Tables[0]
    GridView1.DataBind()
    con.Close()
   End Sub
End Class

确保您使用的连接或sql字符串正确无误。

答案 2 :(得分:0)

我建议:

假设这个标记:

enter image description here

所以我们拖入了一个按钮和一个网格视图。

现在,双击按钮,我们得到/拥有这个代码存根:

Imports System.Data.SqlClient

Public Class HotelGrid
Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

End Sub


Sub LoadGrid()

    Using cmdSQL As New SqlCommand("SELECT ID, FirstName, LastName, HotelName, City from tblHotels",
                    New SqlConnection(My.Settings.TEST3))

        cmdSQL.Connection.Open()
        GridView1.DataSource = cmdSQL.ExecuteReader
        GridView1.DataBind()

    End Using

End Sub

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    LoadGrid()

End Sub


End Class

注意这里的一些重要事项。

首先我非常推荐一般的sql数据拉取,使用sql命令对象。

为什么?

嗯,命令对象有:

A place to hold/have/set the sql (sql command text)
A connection object - no need to create a separate one
A data reader - no need to create a separate one

换句话说,sql 命令对象具有所有三个基本位和部分来提取数据。

而且我们经常想说某种记录集(数据表),所以我们可以这样做:

   dim MyTable as new DataTable
    Using cmdSQL As New SqlCommand("SELECT ID, FirstName, LastName, HotelName, City from tblHotels",
                    New SqlConnection(My.Settings.TEST3))

        cmdSQL.Connection.Open()
        MyTable.load(cmdSQL.ExecuteReader)

        GridView1.DataSource = MyTable
        GridView1.DataBind()

    End Using

所以请注意上面我们是如何创建数据表对象的。然后可以将该数据表与 for/each 进行交互。您甚至可以编辑该表中的数据,或者如上所示,使用数据加载数据表 - 然后将其分配给网格视图。

结果输出是这样的:

enter image description here

仅供参考: 在我的示例中,我使用了 sqlclient 提供程序。在您的情况下,您使用的是 ODBC 提供程序。所以上面的代码将完全相同,但现在使用 ODBC,我们得到:

所以代替 ado.net (sql Client),您使用 ODBC。所以你有一个

Imports System.Data.Odbc

因此我们的加载网格代码可以/将是这样的:

Sub LoadGrid2()

    Using cmdSQL As New OdbcCommand("SELECT ID, FirstName, LastName, HotelName, City from tblHotels",
                    New OdbcConnection(My.Settings.TEST3ODBC))

        cmdSQL.Connection.Open()
        GridView1.DataSource = cmdSQL.ExecuteReader
        GridView1.DataBind()

    End Using

End Sub

所以,请注意代码是如何真正“相同”的,但只是使用不同的提供程序(在您的情况下为 ODBC)。

您仍然可以声明并使用一个“数据表”来保存查询结果。