Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 按钮没有发挥应有的功能_C#_Html_Sql_Asp.net - Fatal编程技术网

C# 按钮没有发挥应有的功能

C# 按钮没有发挥应有的功能,c#,html,sql,asp.net,C#,Html,Sql,Asp.net,我有一个项目,创建一个网站,连接我的数据库,以执行不同的功能。当我创建web表单并将其与数据库连接时,当我单击按钮时,所有产品都会出现,但不会出现 以下是SQL过程: CREATE PROC reviewOrders AS BEGIN SELECT * FROM Orders END 这是c代码 以及HTML代码: <%@ Page Language="C#" AutoEventWireup="true" CodeBehin

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

以下是SQL过程:

    CREATE PROC reviewOrders
    AS
    BEGIN 
    SELECT * 
    FROM Orders 
    END 
这是c代码

以及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>

能告诉我少了什么吗?
感谢是前进

我建议使用
ASP Gridview
而不是
ASP Table
。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>

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

看起来您缺少用结果填充/填充表格的代码。@dvo我对C#和HTML完全不熟悉,所以您能帮我一下吗?有很多不同的主题(关于StackOverflow和通过简单的谷歌搜索)在消耗数据……但如果您仔细想想,在
cmd.ExecuteNonQuery()之后,您实际在对数据做什么ExecuteNonQuery
在不返回结果时使用。您正在返回结果。在GridView中创建DataBind()后,请查看此引用以填充行数据(通过BoundFields或在此处指定TemplateField和所需控件):@JohnPete22感谢您的引用。To OP-这是生成表列的首选方法,因为它提供了更多的控制,但它们应该基于DataTable自动生成。您可能需要将
AutoGenerateColumns=“true”
添加到GridView中attributes@dvo如果OP正在使用RWD网站,那么GridView将在标记中自动生成一个表时破坏布局。在这种情况下,ListView工作得更好。
<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>
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();
}