c# - 该按钮没有执行其应有的功能
问题描述
我有一个项目来创建一个连接我的数据库以执行不同功能的网站。当我创建 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>
有人可以告诉我缺少什么吗?谢谢是提前!
解决方案
我建议使用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)
为我处理关闭连接和命令。试一试。
推荐阅读
- c# - 反思:如何获取基础方法(不是原始方法)?
- c++ - 如何将对象写入文件,并在 C++ 中从中读取?
- laravel - 如何构建多个仪表板?
- c++ - 在 CWinApp 中 m_pMainWnd 为 NULL,因为未调用 InitInstance
- c++ - 如果范围没有排序,inplace_merge 会做什么?
- c++ - 未定义的参考在 arm chromebook 上编译 taskwarrior
- json - 在Angular中使用httpclient服务加载本地json异步
- javascript - 在 VueJS 中将组件作为道具传递时出现未知的自定义元素错误
- angular - 构建后如何使用href修复离子路由?
- c++ - 输出混乱