GridView 订单页 购物车页 ASP.NET SQL
GridView 图片订单页面购物车页面
引言
本文讨论如何使用 GridView ASP.NET C# 和 SQL Server 创建订单页和购物车页
- 创建三张表
- 创建一个 Web 项目
- 在项目解决方案中创建一个Images文件夹
- 将一些图像文件添加到Images文件夹中
- 将Default.aspx网页重命名为OrderPage.aspx
- 从工具箱拖放
GridView
对象到 Web 窗体上。 - 创建以下
GridView
列,并将GridView AutoGenerateColumn
设置为false
。 - 其中
AddToCart
是一个按钮,Picture ID、Title 和 Date Added 是文本字段,PictureURL
是图像字段。 GridView
将如下所示- 当订单页加载时,所有项目都必须加载到
GridView
中供用户选择,将以下代码复制到加载页面事件中string Sel = "Select * from ItemTable"; SqlConnection Con = new SqlConnection(Cn); SqlCommand cmd = new SqlCommand(Sel, Con); Con.Open(); DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn("PictureID", typeof(int))); dt.Columns.Add(new DataColumn("PictureURL", typeof(string))); dt.Columns.Add(new DataColumn("Title", typeof(string))); dt.Columns.Add(new DataColumn("DateAdded", typeof(DateTime))); SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { DataRow dr = dt.NewRow(); dr["PictureID"] = Convert.ToInt32(reader["PictureId"]); dr["PictureURL"] = ResolveUrl("~/Images/" +reader["PictureURL"]); dr["Title"] = reader["Title"]; dr["DateAdded"] = reader["DateAdded"]; dt.Rows.Add(dr); } Con.Close(); GridView1.DataSource = dt; GridView1.DataBind();
其中 Cn 是连接字符串。
- 向 SQL 表输入一些数据
- 构建并运行应用程序。
- 将显示以下结果
AddToCart
按钮点击事件设置
AddToCart
按钮属性。- 使用源页面或 HTML 页面将其添加到
GridView
属性中OnRowCommand="GridView1_RowCommand"
- 将这些代码行添加到页面代码的背后
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "AddToCart") { int index = Convert.ToInt32(e.CommandArgument); GridViewRow row = GridView1.Rows[index]; AddShopCart(row.Cells[1].Text.ToString()); } }
- 单击
AddToCart
按钮后,您需要将项目移动到购物车。为此,您需要编写代码以向OrderTable
进行数据输入,因为ItemId
是唯一的。基于ItemId
,我们将数据输入到OrderTable
。 - 在向表进行输入之前,我们需要订单号,我们可以从
ControlTable
获取订单号,因为ControlTable
保存了最后使用的订单号。 - 将选定项目插入到购物车的方法将从
ControlTable
获取最后使用的订单号,并且在将值插入到OrderTable
后,将更新ControlTable
中的订单号。private void AddShopCart(string ItemId) { string ord = OrderNumber(); if (ord != "Bad order") { int ordernumber = Convert.ToInt32(ord); ordernumber += 1; SqlConnection C_n = new SqlConnection(Cn); SqlCommand cm = new SqlCommand("Insert INTO OrderTable VALUES ('" + ordernumber + "', '" + ItemId + "', '" + "101" + "', '" + Convert.ToDateTime("2/19/2007") + "','" + "1" + "')", C_n); C_n.Open(); SqlDataReader dr = cm.ExecuteReader(); C_n.Close(); UpdateOrderNumber(ordernumber); } }
- 获取最后使用的订单号的方法。
private string OrderNumber() { SqlConnection Or_Cn = new SqlConnection(Cn); SqlCommand Or_Cm = new SqlCommand("Select OrderNumber from ControlTable", Or_Cn); Or_Cn.Open(); SqlDataReader Or_rd = Or_Cm.ExecuteReader(); if (Or_rd.Read()) { return Or_rd["OrderNumber"].ToString(); } else { return "Bad order"; } }
- 更新
ControlTable
中的订单号的方法private void UpdateOrderNumber(int UpdatedNumber) { SqlConnection Op_Cn = new SqlConnection(Cn); SqlCommand Op_Cm = new SqlCommand ("Update ControlTable Set OrderNumber=" + UpdatedNumber, Op_Cn); Op_Cn.Open(); SqlDataReader Op_rd = Op_Cm.ExecuteReader(); Op_Cn.Close(); }
- 向项目添加新页面,并将其命名为ShoppingCart.aspx。
- 从工具箱拖放
GridView
对象到 Web 窗体上。 - 创建以下
GridView
列,并将GridView AutoGenerateColumn
设置为false
。 - 其中 Delete 是一个按钮,Picture ID、Title、Price 和 Date Added 是文本字段,PictureURL 是图像字段。
GridView
将如下所示- 在页面加载事件下,复制以下代码
string Sel = "Select a.* from ItemTable as a INNER JOIN OrderTable as b ON a.PictureId=b.ItemId"; SqlConnection Con = new SqlConnection(Cn); SqlCommand cmd = new SqlCommand(Sel, Con); Con.Open(); DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn("PictureID", typeof(int))); dt.Columns.Add(new DataColumn("Title", typeof(string))); dt.Columns.Add(new DataColumn("Price", typeof(string))); dt.Columns.Add(new DataColumn("DateAdded", typeof(DateTime))); dt.Columns.Add(new DataColumn("PictureURL", typeof(string))); SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { DataRow dr = dt.NewRow(); dr["PictureID"] = Convert.ToInt32(reader["PictureId"]); dr["Title"] = reader["Title"]; dr["Price"] = reader["Price"]; dr["DateAdded"] = reader["DateAdded"]; dr["PictureURL"] = ResolveUrl("~/Images/" + reader["PictureURL"]); dt.Rows.Add(dr); } Con.Close(); GridView1.DataSource = dt; GridView1.DataBind();
- 构建并运行。放置一些订单后,将购物车设为启动页,您将看到您已放置的所有订单都列在那里。