65.9K
CodeProject 正在变化。 阅读更多。
Home

GridView 订单页 购物车页 ASP.NET SQL

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.47/5 (14投票s)

2007 年 2 月 16 日

CPOL

2分钟阅读

viewsIcon

320165

downloadIcon

1

GridView 图片订单页面购物车页面

引言

本文讨论如何使用 GridView ASP.NET C# 和 SQL Server 创建订单页和购物车页

  1. 创建三张表

    Screenshot - P11.gif

  2. 创建一个 Web 项目
  3. 在项目解决方案中创建一个Images文件夹
  4. 将一些图像文件添加到Images文件夹中
  5. Screenshot - P2.gif

  6. Default.aspx网页重命名为OrderPage.aspx
  7. 从工具箱拖放GridView对象到 Web 窗体上。
  8. 创建以下GridView列,并将GridView AutoGenerateColumn设置为false
  9. Screenshot - p3.gif

  10. 其中AddToCart是一个按钮,Picture ID、Title 和 Date Added 是文本字段,PictureURL是图像字段。
  11. GridView将如下所示

    Screenshot - p4.gif

  12. 当订单页加载时,所有项目都必须加载到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 是连接字符串。

  13. 向 SQL 表输入一些数据

    Screenshot - p5.gif

    Screenshot - p6.gif

  14. 构建并运行应用程序。
  15. 将显示以下结果

    Screenshot - p7.gif

  16. AddToCart按钮点击事件

    Screenshot - p8.gif

    设置AddToCart按钮属性。

  17. 使用源页面或 HTML 页面将其添加到GridView属性中
    OnRowCommand="GridView1_RowCommand"
  18. 将这些代码行添加到页面代码的背后
    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()); 
    } 
    } 
  19. 单击AddToCart按钮后,您需要将项目移动到购物车。为此,您需要编写代码以向OrderTable进行数据输入,因为ItemId是唯一的。基于ItemId,我们将数据输入到OrderTable
  20. 在向表进行输入之前,我们需要订单号,我们可以从ControlTable获取订单号,因为ControlTable保存了最后使用的订单号。
  21. 将选定项目插入到购物车的方法将从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); 
    } 
    } 
  22. 获取最后使用的订单号的方法。
    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"; 
    } 
    } 
  23. 更新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(); 
    } 
  24. 向项目添加新页面,并将其命名为ShoppingCart.aspx
  25. 从工具箱拖放GridView对象到 Web 窗体上。
  26. 创建以下GridView列,并将GridView AutoGenerateColumn设置为false

    Screenshot - p9.gif

  27. 其中 Delete 是一个按钮,Picture ID、Title、Price 和 Date Added 是文本字段,PictureURL 是图像字段。
  28. GridView将如下所示

    Screenshot - p10.gif

  29. 在页面加载事件下,复制以下代码
    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(); 
  30. 构建并运行。放置一些订单后,将购物车设为启动页,您将看到您已放置的所有订单都列在那里。
© . All rights reserved.