首页 > 解决方案 > 该按钮没有执行其应有的功能

问题描述

我有一个项目来创建一个连接我的数据库以执行不同功能的网站。当我创建 Web 表单并将其与数据库连接时,当我单击按钮时,假设所有产品都会出现,但它不会发生。

这是 SQL 过程:

    CREATE PROC reviewOrders
    AS
    BEGIN 
    SELECT * 
    FROM Orders 
    END 

这是c#代码

    protected void reviewOrders(object sender, EventArgs e)
    {
        string connStr = ConfigurationManager.ConnectionStrings["MyDbConn"].ToString();
        SqlConnection conn = new SqlConnection(connStr);
        SqlCommand cmd = new SqlCommand("reviewOrders", conn);
        cmd.CommandType = CommandType.StoredProcedure;
        conn.Open();
        cmd.ExecuteNonQuery();
        conn.Close();

    }

和 HTML 代码:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ReviewOrders.aspx.cs" 
     Inherits="GUCommerce.ReviewOrders" %>

     <!DOCTYPE html>

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
                <asp:Button ID="viewOrders" runat="server" OnClick ="reviewOrders" Height="45px" 
    Text="view orders" Width="148px" />
            </div>
            <p style="height: 121px">

            </p>
            <asp:Panel ID="x" Visible ="false" runat="server" Height="338px">
                <asp:Table ID="orders" CellPadding ="4" runat="server" Height="67px" Width="316px">
                </asp:Table>
            </asp:Panel>
        </form>
    </body>
    </html>

有人可以告诉我缺少什么吗?谢谢是提前!

标签: c#htmlsqlasp.net

解决方案


我建议使用ASP Gridview而不是ASP Table. Gridviews ( <asp:GridView>) 用于在表格中呈现数据。它们实际上被渲染为 html 表格。以下是如何使用您的代码构建一个:

<asp:Panel ID="x" Visible="false" runat="server" Height="338px">
    <%--<asp:Table ID="orders" CellPadding="4" runat="server" Height="67px" Width="316px"></asp:Table>--%>
    <asp:GridView ID="gvOrders" CellPadding="4" runat="server" Height="67px" Width="316px"></asp:GridView>
</asp:Panel>

现在,在代码隐藏中有几个变化。ADataTable可用于存储查询结果,然后您可以将 a 绑定DataTable到 a GridView。为此,您需要一个SqlDataAdapter如下所示的。

protected void reviewOrders(object sender, EventArgs e)
{
    // data table variable outside of sql block
    // you could also move the sql code to another method that returns a datatable
    DataTable dt = null;

    string connStr = ConfigurationManager.ConnectionStrings["MyDbConn"].ToString();
    using (SqlConnection conn = new SqlConnection(connStr))
    {
        SqlCommand cmd = new SqlCommand("reviewOrders", conn);
        cmd.CommandType = CommandType.StoredProcedure;

        using (cmd)
        {
            conn.Open();

            // Use SQL Data Adapter instead of Execute Non Query
            using (SqlDataAdapter _Adapter = new SqlDataAdapter(cmd))
            {
                // Fill DataTable with results of query
                dt = new DataTable();
                _Adapter.Fill(dt);
            }
        }
    }

    //

    gvOrders.DataSource = dt;
    gvOrders.DataBind();
}

注意:我使用using(SqlConnection)andusing(cmd)为我处理关闭连接和命令。试一试。


推荐阅读