在商品展示页点击购买跳到购物车页面,用一个DataTable将购买的商品存放起来,并可以删除或更改购买数量、合计出最终购物车的小计及总计。
显示商品页面
1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="shopCart.aspx.cs" Inherits="shopCart" %>
2
3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
5 <html xmlns="http://www.w3.org/1999/xhtml">
6 <head runat="server">
7 <title>无标题页</title>
8 </head>
9 <body>
10 <form id="form1" runat="server">
11 <table border="1" width="100%">
12 <tr>
13 <td>
14 <table>
15 <tr>
16 <td>类别名称:</td>
17 </tr>
18 <asp:Repeater ID="RepProductType" runat="server">
19 <ItemTemplate>
20 <tr>
21 <td><a href='<%#"shopCart.aspx?productTypeID="+Eval("productTypeID")%>'><%#Eval("productTypeName") %></a></td>
22 </tr>
23 </ItemTemplate>
24 </asp:Repeater>
25 </table>
26 </td>
27 <td>
28 <asp:DataList ID="DataList1" runat="server" RepeatColumns="3"
29 RepeatDirection="Horizontal" Width="760px">
30 <ItemTemplate>
31 <table border="0" cellpadding="3" cellspacing="2">
32 <tr>
33 <td colspan="2"><img src='UploadImages/<%#Eval("productPic") %>' width="150" height="150" /></td>
34 </tr>
35 <tr>
36 <td><%#Eval("productName")%></td>
37 <td><a href='<%#"shopCart1.aspx?productID="+Eval("productID") %>'>购买</a></td>
38 </tr>
39 </table>
40 </ItemTemplate>
41 </asp:DataList>
42 </td>
43 </tr>
44 </table>
45 </form>
46 </body>
47 </html>
2
3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
5 <html xmlns="http://www.w3.org/1999/xhtml">
6 <head runat="server">
7 <title>无标题页</title>
8 </head>
9 <body>
10 <form id="form1" runat="server">
11 <table border="1" width="100%">
12 <tr>
13 <td>
14 <table>
15 <tr>
16 <td>类别名称:</td>
17 </tr>
18 <asp:Repeater ID="RepProductType" runat="server">
19 <ItemTemplate>
20 <tr>
21 <td><a href='<%#"shopCart.aspx?productTypeID="+Eval("productTypeID")%>'><%#Eval("productTypeName") %></a></td>
22 </tr>
23 </ItemTemplate>
24 </asp:Repeater>
25 </table>
26 </td>
27 <td>
28 <asp:DataList ID="DataList1" runat="server" RepeatColumns="3"
29 RepeatDirection="Horizontal" Width="760px">
30 <ItemTemplate>
31 <table border="0" cellpadding="3" cellspacing="2">
32 <tr>
33 <td colspan="2"><img src='UploadImages/<%#Eval("productPic") %>' width="150" height="150" /></td>
34 </tr>
35 <tr>
36 <td><%#Eval("productName")%></td>
37 <td><a href='<%#"shopCart1.aspx?productID="+Eval("productID") %>'>购买</a></td>
38 </tr>
39 </table>
40 </ItemTemplate>
41 </asp:DataList>
42 </td>
43 </tr>
44 </table>
45 </form>
46 </body>
47 </html>
购物车前台代码
1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="shopCart1.aspx.cs" Inherits="shopCart1" %>
2
3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
5 <html xmlns="http://www.w3.org/1999/xhtml">
6 <head runat="server">
7 <title>无标题页</title>
8 </head>
9 <body>
10 <form id="form1" runat="server">
11 <table border="1">
12 <tr>
13 <td>商品号</td>
14 <td>商品名</td>
15 <td>单价</td>
16 <td>类型号</td>
17 <td>图片</td>
18 <td>购买数量</td>
19 <td>小计</td>
20 <td>更改数量</td>
21 <td>放回原处</td>
22 </tr>
23 <asp:Repeater ID="Repeater1" runat="server"
24 onitemcommand="Repeater1_ItemCommand" onitemdatabound="Repeater1_ItemDataBound">
25 <ItemTemplate>
26 <tr>
27 <td>
28 <asp:Literal ID="LitProductID" runat="server" Text='<%#Eval("productID")%>'></asp:Literal></td>
29 <td><%#Eval("productName")%></td>
30 <td><%#Eval("unitPrice")%></td>
31 <td><%#Eval("productTypeID")%></td>
32 <td><img width="80" height="80" src='<%#"UploadImages/"+Eval("productPic") %>' /></td>
33 <td id="TDcount" runat="server">
34 <asp:Label ID="LblBuyCount" runat="server" Text='<%#Eval("buyCount")%>'></asp:Label>
35 <asp:TextBox ID="TxtBuyCount" Visible="false" runat="server" Text='<%#Eval("buyCount")%>'></asp:TextBox>
36 </td>
37 <td><%#Eval("subtotal")%></td>
38 <td>
39 <asp:HyperLink ID="HLUpdateBuyCount" runat="server" NavigateUrl='<%#"shopCart1.aspx?cartProductID="+Eval("productID") %>'>更改数量</asp:HyperLink>
40 <asp:LinkButton ID="LBtnUpdate" runat="server" Visible="false" onclick="LBtnUpdate_Click">更改</asp:LinkButton>
41 <asp:LinkButton ID="LBtnCancel" runat="server" Visible="false" onclick="LBtnCancel_Click">取消</asp:LinkButton>
42 </td>
43 <td><asp:ImageButton ID="ImgDel" title="删除" CommandName="delete" ImageUrl="Admin/HXImages/del.gif" runat="server" /></td>
44 </tr>
45 </ItemTemplate>
46 </asp:Repeater>
47 <tr>
48 <td colspan="8" align="right">总计:</td>
49 <td>
50 <asp:Label ID="LblTotal" runat="server" Text="Label"></asp:Label></td>
51 </tr>
52 </table>
53 <a href="shopCart.aspx">继续购物</a>
54 </form>
55 </body>
56 </html>
57
2
3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
5 <html xmlns="http://www.w3.org/1999/xhtml">
6 <head runat="server">
7 <title>无标题页</title>
8 </head>
9 <body>
10 <form id="form1" runat="server">
11 <table border="1">
12 <tr>
13 <td>商品号</td>
14 <td>商品名</td>
15 <td>单价</td>
16 <td>类型号</td>
17 <td>图片</td>
18 <td>购买数量</td>
19 <td>小计</td>
20 <td>更改数量</td>
21 <td>放回原处</td>
22 </tr>
23 <asp:Repeater ID="Repeater1" runat="server"
24 onitemcommand="Repeater1_ItemCommand" onitemdatabound="Repeater1_ItemDataBound">
25 <ItemTemplate>
26 <tr>
27 <td>
28 <asp:Literal ID="LitProductID" runat="server" Text='<%#Eval("productID")%>'></asp:Literal></td>
29 <td><%#Eval("productName")%></td>
30 <td><%#Eval("unitPrice")%></td>
31 <td><%#Eval("productTypeID")%></td>
32 <td><img width="80" height="80" src='<%#"UploadImages/"+Eval("productPic") %>' /></td>
33 <td id="TDcount" runat="server">
34 <asp:Label ID="LblBuyCount" runat="server" Text='<%#Eval("buyCount")%>'></asp:Label>
35 <asp:TextBox ID="TxtBuyCount" Visible="false" runat="server" Text='<%#Eval("buyCount")%>'></asp:TextBox>
36 </td>
37 <td><%#Eval("subtotal")%></td>
38 <td>
39 <asp:HyperLink ID="HLUpdateBuyCount" runat="server" NavigateUrl='<%#"shopCart1.aspx?cartProductID="+Eval("productID") %>'>更改数量</asp:HyperLink>
40 <asp:LinkButton ID="LBtnUpdate" runat="server" Visible="false" onclick="LBtnUpdate_Click">更改</asp:LinkButton>
41 <asp:LinkButton ID="LBtnCancel" runat="server" Visible="false" onclick="LBtnCancel_Click">取消</asp:LinkButton>
42 </td>
43 <td><asp:ImageButton ID="ImgDel" title="删除" CommandName="delete" ImageUrl="Admin/HXImages/del.gif" runat="server" /></td>
44 </tr>
45 </ItemTemplate>
46 </asp:Repeater>
47 <tr>
48 <td colspan="8" align="right">总计:</td>
49 <td>
50 <asp:Label ID="LblTotal" runat="server" Text="Label"></asp:Label></td>
51 </tr>
52 </table>
53 <a href="shopCart.aspx">继续购物</a>
54 </form>
55 </body>
56 </html>
57
购物车后台代码
1 using System;
2 using System.Collections;
3 using System.Configuration;
4 using System.Data;
5 using System.Linq;
6 using System.Web;
7 using System.Web.Security;
8 using System.Web.UI;
9 using System.Web.UI.HtmlControls;
10 using System.Web.UI.WebControls;
11 using System.Web.UI.WebControls.WebParts;
12 using System.Xml.Linq;
13 using System.Text;
14
15 public partial class ShopCart2 : System.Web.UI.Page
16 {
17 string sql = null;
18 DataSet ds = new DataSet();
19 protected void Page_Load(object sender, EventArgs e)
20 {
21 if (!IsPostBack)
22 {
23 if (productID != null)
24 {
25 GetShopCart();
26 }
27 else
28 {
29 Response.Redirect("shopCart.aspx");
30 }
31 }
32 }
33 #region//Create a shopCart and put the product into it
34 void GetShopCart()
35 {
36 if (Session["shopCart"] == null || Session["shopCart"] == "")
37 {
38 //there has no cart
39 CreateCartTable();
40 }
41 //there has a cart
42 PutInShopCart();
43 }
44 void PutInShopCart()
45 {
46 DataTable dt = new DataTable("myTable");
47 dt = (DataTable)Session["shopCart"];
48 bool hasone = false;
49 foreach (DataRow dr in dt.Rows)
50 {
51 if (int.Parse(productID) == Convert.ToInt32(dr["productID"]))
52 {
53 //select the same product
54 //buyCount plus one
55 dr["buyCount"] = Convert.ToInt32(dr["buyCount"]) + 1;
56 dr["subtotal"] = Convert.ToInt32(dr["buyCount"]) * Convert.ToDecimal(dr["unitPrice"]);
57 hasone = true;
58 break;
59 }
60 else
61 {
62 hasone = false;
63 }
64 }
65 if (hasone == false)
66 {
67 //put the product into dt
68 sql = string.Format("select * from productTable where productID={0}", int.Parse(Request.QueryString["productID"]));
69 DataTable productTable = DataBase.ExecuteDataSet(sql).Tables[0];
70 DataRow rows;
71 rows = new DataTable("cartTable").NewRow();
72 int productID = Convert.ToInt32(productTable.Rows[0]["productID"]);
73 string productName = productTable.Rows[0]["productID"].ToString();
74 Decimal unitPrice = Convert.ToDecimal(productTable.Rows[0]["unitPrice"]);
75 int productTypeID = Convert.ToInt32(productTable.Rows[0]["productTypeID"]);
76 string productPic = productTable.Rows[0]["productPic"].ToString();
77 int buyCount = 1;
78 Decimal subtotal = buyCount * unitPrice;
79 dt.Rows.Add(productID, productName, unitPrice, productTypeID, productPic, buyCount, subtotal);
80 }
81 Session["shopCart"] = dt;
82 Repeater1.DataSource = dt.DefaultView;
83 Repeater1.DataBind();
84 GetTotal();
85 }
86 void CreateCartTable()
87 {
88 DataTable dtCart = new DataTable("cartTable");
89 DataColumn dc;
90 dc = new DataColumn("productID", System.Type.GetType("System.Int32"));
91 dtCart.Columns.Add(dc);
92 dc = new DataColumn("productName", System.Type.GetType("System.String"));
93 dtCart.Columns.Add(dc);
94 dc = new DataColumn("unitPrice", System.Type.GetType("System.Decimal"));
95 dtCart.Columns.Add(dc);
96 dc = new DataColumn("productTypeID", System.Type.GetType("System.Int32"));
97 dtCart.Columns.Add(dc);
98 dc = new DataColumn("productPic", System.Type.GetType("System.String"));
99 dtCart.Columns.Add(dc);
100 dc = new DataColumn("buyCount", System.Type.GetType("System.Int32"));
101 dtCart.Columns.Add(dc);
102 dc = new DataColumn("subtotal", System.Type.GetType("System.Decimal"));
103 dtCart.Columns.Add(dc);
104 ds.Tables.Add(dtCart);
105
106 //DataRow dr;
107 //dr = new DataTable("cartTable").NewRow();
108 //int productID = Convert.ToInt32(ds.Tables["productTable"].Rows[0]["productID"]);
109 //string productName = ds.Tables["productTable"].Rows[0]["productID"].ToString();
110 //Decimal unitPrice = Convert.ToDecimal(ds.Tables["productTable"].Rows[0]["unitPrice"]);
111 //int productTypeID = Convert.ToInt32(ds.Tables["productTable"].Rows[0]["productTypeID"]);
112 //string productPic = ds.Tables["productTable"].Rows[0]["productPic"].ToString();
113 //int buyCount = 1;
114 //Decimal subtotal = buyCount * unitPrice;
115 //dtCart.Rows.Add(productID, productName, unitPrice, productTypeID, productPic, buyCount, subtotal);
116 Session["shopCart"] = dtCart;
117 Repeater1.DataSource = dtCart.DefaultView;
118 Repeater1.DataBind();
119 }
120 #endregion
121 protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
122 {
123 if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
124 {
125 ((ImageButton)e.Item.FindControl("ImgDel")).Attributes.Add("onclick", "return confirm('确定要删除吗?')");
126 string nowProID = ((Literal)e.Item.FindControl("LitProductID")).Text.ToString();
127 ((TextBox)e.Item.FindControl("TxtBuyCount")).Attributes.Add("onfocus", "TxtBuyCountOnfocus(" + nowProID + ")");
128 }
129 }
130 protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
131 {
132 int proID = Convert.ToInt32(((Literal)e.Item.FindControl("LitProductID")).Text.ToString());
133 DataTable dt = (DataTable)Session["shopCart"];
134 for (int i = 0; i < dt.Rows.Count; i++)
135 {
136 if (Convert.ToInt32(dt.Rows[i]["productID"]) == proID)
137 {
138 //delete this row
139 dt.Rows.RemoveAt(i);
140 }
141 }
142 Session["shopCart"] = dt;
143 Repeater1.DataSource = dt.DefaultView;
144 Repeater1.DataBind();
145 GetTotal();
146 }
147 void GetTotal()
148 {
149 decimal total = 0;
150 DataTable dt = (DataTable)Session["shopCart"];
151 for (int i = 0; i < dt.Rows.Count; i++)
152 {
153 total += Convert.ToDecimal(dt.Rows[i]["subtotal"]);
154 }
155 LblTotal.Text = total.ToString();
156 }
157 #region//update your buy products' count
158 protected void TxtBuyCount_TextChanged(object sender, EventArgs e)
159 {
160 DataTable dt = (DataTable)Session["shopCart"];
161 //找出当前文本框所在行的productID来
162 int cartProductID = Convert.ToInt32(TxtProductID.Text);
163 bool b = true;
164 for (int i = 0; i < Repeater1.Items.Count; i++)
165 {
166 if (Convert.ToInt32(((Literal)Repeater1.Items[i].FindControl("LitProductID")).Text) == cartProductID)
167 {
168 try
169 {
170 int nowBuyCount = Convert.ToInt32(((TextBox)Repeater1.Items[i].FindControl("TxtBuyCount")).Text);
171 dt.Rows[i]["buyCount"] = nowBuyCount.ToString();
172 dt.Rows[i]["subtotal"] = Convert.ToInt32(dt.Rows[i]["unitPrice"]) * nowBuyCount;
173 }
174 catch
175 {
176 Response.Write("<script>alert('数量输入有误!');</script>");
177 b = false;
178 }
179 Repeater1.DataSource = dt.DefaultView;
180 Repeater1.DataBind();
181 GetTotal();
182 if (b)
183 {
184 Response.Write("<script>alert('数量修改成功!');</script>");
185 }
186 }
187 }
188 }
189 #endregion
190
191 public string productID
192 {
193 get
194 {
195 return Request.QueryString["productID"];
196 }
197 }
198 }
199
2 using System.Collections;
3 using System.Configuration;
4 using System.Data;
5 using System.Linq;
6 using System.Web;
7 using System.Web.Security;
8 using System.Web.UI;
9 using System.Web.UI.HtmlControls;
10 using System.Web.UI.WebControls;
11 using System.Web.UI.WebControls.WebParts;
12 using System.Xml.Linq;
13 using System.Text;
14
15 public partial class ShopCart2 : System.Web.UI.Page
16 {
17 string sql = null;
18 DataSet ds = new DataSet();
19 protected void Page_Load(object sender, EventArgs e)
20 {
21 if (!IsPostBack)
22 {
23 if (productID != null)
24 {
25 GetShopCart();
26 }
27 else
28 {
29 Response.Redirect("shopCart.aspx");
30 }
31 }
32 }
33 #region//Create a shopCart and put the product into it
34 void GetShopCart()
35 {
36 if (Session["shopCart"] == null || Session["shopCart"] == "")
37 {
38 //there has no cart
39 CreateCartTable();
40 }
41 //there has a cart
42 PutInShopCart();
43 }
44 void PutInShopCart()
45 {
46 DataTable dt = new DataTable("myTable");
47 dt = (DataTable)Session["shopCart"];
48 bool hasone = false;
49 foreach (DataRow dr in dt.Rows)
50 {
51 if (int.Parse(productID) == Convert.ToInt32(dr["productID"]))
52 {
53 //select the same product
54 //buyCount plus one
55 dr["buyCount"] = Convert.ToInt32(dr["buyCount"]) + 1;
56 dr["subtotal"] = Convert.ToInt32(dr["buyCount"]) * Convert.ToDecimal(dr["unitPrice"]);
57 hasone = true;
58 break;
59 }
60 else
61 {
62 hasone = false;
63 }
64 }
65 if (hasone == false)
66 {
67 //put the product into dt
68 sql = string.Format("select * from productTable where productID={0}", int.Parse(Request.QueryString["productID"]));
69 DataTable productTable = DataBase.ExecuteDataSet(sql).Tables[0];
70 DataRow rows;
71 rows = new DataTable("cartTable").NewRow();
72 int productID = Convert.ToInt32(productTable.Rows[0]["productID"]);
73 string productName = productTable.Rows[0]["productID"].ToString();
74 Decimal unitPrice = Convert.ToDecimal(productTable.Rows[0]["unitPrice"]);
75 int productTypeID = Convert.ToInt32(productTable.Rows[0]["productTypeID"]);
76 string productPic = productTable.Rows[0]["productPic"].ToString();
77 int buyCount = 1;
78 Decimal subtotal = buyCount * unitPrice;
79 dt.Rows.Add(productID, productName, unitPrice, productTypeID, productPic, buyCount, subtotal);
80 }
81 Session["shopCart"] = dt;
82 Repeater1.DataSource = dt.DefaultView;
83 Repeater1.DataBind();
84 GetTotal();
85 }
86 void CreateCartTable()
87 {
88 DataTable dtCart = new DataTable("cartTable");
89 DataColumn dc;
90 dc = new DataColumn("productID", System.Type.GetType("System.Int32"));
91 dtCart.Columns.Add(dc);
92 dc = new DataColumn("productName", System.Type.GetType("System.String"));
93 dtCart.Columns.Add(dc);
94 dc = new DataColumn("unitPrice", System.Type.GetType("System.Decimal"));
95 dtCart.Columns.Add(dc);
96 dc = new DataColumn("productTypeID", System.Type.GetType("System.Int32"));
97 dtCart.Columns.Add(dc);
98 dc = new DataColumn("productPic", System.Type.GetType("System.String"));
99 dtCart.Columns.Add(dc);
100 dc = new DataColumn("buyCount", System.Type.GetType("System.Int32"));
101 dtCart.Columns.Add(dc);
102 dc = new DataColumn("subtotal", System.Type.GetType("System.Decimal"));
103 dtCart.Columns.Add(dc);
104 ds.Tables.Add(dtCart);
105
106 //DataRow dr;
107 //dr = new DataTable("cartTable").NewRow();
108 //int productID = Convert.ToInt32(ds.Tables["productTable"].Rows[0]["productID"]);
109 //string productName = ds.Tables["productTable"].Rows[0]["productID"].ToString();
110 //Decimal unitPrice = Convert.ToDecimal(ds.Tables["productTable"].Rows[0]["unitPrice"]);
111 //int productTypeID = Convert.ToInt32(ds.Tables["productTable"].Rows[0]["productTypeID"]);
112 //string productPic = ds.Tables["productTable"].Rows[0]["productPic"].ToString();
113 //int buyCount = 1;
114 //Decimal subtotal = buyCount * unitPrice;
115 //dtCart.Rows.Add(productID, productName, unitPrice, productTypeID, productPic, buyCount, subtotal);
116 Session["shopCart"] = dtCart;
117 Repeater1.DataSource = dtCart.DefaultView;
118 Repeater1.DataBind();
119 }
120 #endregion
121 protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
122 {
123 if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
124 {
125 ((ImageButton)e.Item.FindControl("ImgDel")).Attributes.Add("onclick", "return confirm('确定要删除吗?')");
126 string nowProID = ((Literal)e.Item.FindControl("LitProductID")).Text.ToString();
127 ((TextBox)e.Item.FindControl("TxtBuyCount")).Attributes.Add("onfocus", "TxtBuyCountOnfocus(" + nowProID + ")");
128 }
129 }
130 protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
131 {
132 int proID = Convert.ToInt32(((Literal)e.Item.FindControl("LitProductID")).Text.ToString());
133 DataTable dt = (DataTable)Session["shopCart"];
134 for (int i = 0; i < dt.Rows.Count; i++)
135 {
136 if (Convert.ToInt32(dt.Rows[i]["productID"]) == proID)
137 {
138 //delete this row
139 dt.Rows.RemoveAt(i);
140 }
141 }
142 Session["shopCart"] = dt;
143 Repeater1.DataSource = dt.DefaultView;
144 Repeater1.DataBind();
145 GetTotal();
146 }
147 void GetTotal()
148 {
149 decimal total = 0;
150 DataTable dt = (DataTable)Session["shopCart"];
151 for (int i = 0; i < dt.Rows.Count; i++)
152 {
153 total += Convert.ToDecimal(dt.Rows[i]["subtotal"]);
154 }
155 LblTotal.Text = total.ToString();
156 }
157 #region//update your buy products' count
158 protected void TxtBuyCount_TextChanged(object sender, EventArgs e)
159 {
160 DataTable dt = (DataTable)Session["shopCart"];
161 //找出当前文本框所在行的productID来
162 int cartProductID = Convert.ToInt32(TxtProductID.Text);
163 bool b = true;
164 for (int i = 0; i < Repeater1.Items.Count; i++)
165 {
166 if (Convert.ToInt32(((Literal)Repeater1.Items[i].FindControl("LitProductID")).Text) == cartProductID)
167 {
168 try
169 {
170 int nowBuyCount = Convert.ToInt32(((TextBox)Repeater1.Items[i].FindControl("TxtBuyCount")).Text);
171 dt.Rows[i]["buyCount"] = nowBuyCount.ToString();
172 dt.Rows[i]["subtotal"] = Convert.ToInt32(dt.Rows[i]["unitPrice"]) * nowBuyCount;
173 }
174 catch
175 {
176 Response.Write("<script>alert('数量输入有误!');</script>");
177 b = false;
178 }
179 Repeater1.DataSource = dt.DefaultView;
180 Repeater1.DataBind();
181 GetTotal();
182 if (b)
183 {
184 Response.Write("<script>alert('数量修改成功!');</script>");
185 }
186 }
187 }
188 }
189 #endregion
190
191 public string productID
192 {
193 get
194 {
195 return Request.QueryString["productID"];
196 }
197 }
198 }
199
1 using System;
2 using System.Collections;
3 using System.Configuration;
4 using System.Data;
5 using System.Linq;
6 using System.Web;
7 using System.Web.Security;
8 using System.Web.UI;
9 using System.Web.UI.HtmlControls;
10 using System.Web.UI.WebControls;
11 using System.Web.UI.WebControls.WebParts;
12 using System.Xml.Linq;
13
14 public partial class shopCart1 : System.Web.UI.Page
15 {
16 string sql = null;
17 DataSet ds = new DataSet();
18 protected void Page_Load(object sender, EventArgs e)
19 {
20 if (!IsPostBack)
21 {
22 if (productID != null)
23 {
24 GetShopCart();
25 }
26 else
27 {
28 if (cartProductID != null && cartProductID != "")
29 {
30 //update product's buyCount
31 UpdateBuyCount();
32 }
33 else
34 {
35 Response.Redirect("shopCart.aspx");
36 }
37 }
38 }
39 }
40 #region//Create a shopCart and put the product into it
41 void GetShopCart()
42 {
43 if (Session["shopCart"] == null||Session["shopCart"] =="")
44 {
45 //there has no cart
46 CreateCartTable();
47 }
48 PutInShopCart();
49 }
50 void PutInShopCart()
51 {
52 DataTable dt = new DataTable("myTable");
53 dt = (DataTable)Session["shopCart"];
54 bool hasone = false;
55 foreach (DataRow dr in dt.Rows)
56 {
57 if (int.Parse(productID) == Convert.ToInt32(dr["productID"]))
58 {
59 //select the same product,buyCount plus one
60 dr["buyCount"] = Convert.ToInt32(dr["buyCount"]) + 1;
61 dr["subtotal"] = Convert.ToInt32(dr["buyCount"]) * Convert.ToDecimal(dr["unitPrice"]);
62 hasone = true;
63 break;
64 }
65 else
66 {
67 hasone = false;
68 }
69 }
70 if (hasone == false)
71 {
72 //put the product into dt
73 sql = string.Format("select * from productTable where productID={0}", int.Parse(Request.QueryString["productID"]));
74 DataTable productTable = DataBase.ExecuteDataSet(sql).Tables[0];
75 DataRow rows;
76 rows = new DataTable("cartTable").NewRow();
77 int productID = Convert.ToInt32(productTable.Rows[0]["productID"]);
78 string productName = productTable.Rows[0]["productID"].ToString();
79 Decimal unitPrice = Convert.ToDecimal(productTable.Rows[0]["unitPrice"]);
80 int productTypeID = Convert.ToInt32(productTable.Rows[0]["productTypeID"]);
81 string productPic = productTable.Rows[0]["productPic"].ToString();
82 int buyCount = 1;
83 Decimal subtotal = buyCount * unitPrice;
84 dt.Rows.Add(productID, productName, unitPrice, productTypeID, productPic, buyCount,subtotal);
85 }
86 Session["shopCart"] = dt;
87 Repeater1.DataSource = dt.DefaultView;
88 Repeater1.DataBind();
89 GetTotal();
90 }
91 void CreateCartTable()
92 {
93 DataTable dtCart = new DataTable("cartTable");
94 DataColumn dc ;
95 dc = new DataColumn("productID", System.Type.GetType("System.Int32"));
96 dtCart.Columns.Add(dc);
97 dc = new DataColumn("productName", System.Type.GetType("System.String"));
98 dtCart.Columns.Add(dc);
99 dc = new DataColumn("unitPrice", System.Type.GetType("System.Decimal"));
100 dtCart.Columns.Add(dc);
101 dc = new DataColumn("productTypeID", System.Type.GetType("System.Int32"));
102 dtCart.Columns.Add(dc);
103 dc = new DataColumn("productPic", System.Type.GetType("System.String"));
104 dtCart.Columns.Add(dc);
105 dc = new DataColumn("buyCount", System.Type.GetType("System.Int32"));
106 dtCart.Columns.Add(dc);
107 dc = new DataColumn("subtotal", System.Type.GetType("System.Decimal"));
108 dtCart.Columns.Add(dc);
109 ds.Tables.Add(dtCart);
110
111 Session["shopCart"] = dtCart;
112 Repeater1.DataSource = dtCart.DefaultView;
113 Repeater1.DataBind();
114 }
115 #endregion
116 protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
117 {
118 if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
119 {
120 ((ImageButton)e.Item.FindControl("ImgDel")).Attributes.Add("onclick", "return confirm('确定要删除吗?')");
121 }
122 }
123 protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
124 {
125 int proID = Convert.ToInt32(((Literal)e.Item.FindControl("LitProductID")).Text.ToString());
126 DataTable dt = (DataTable)Session["shopCart"];
127 for (int i = 0; i < dt.Rows.Count;i++ )
128 {
129 if (Convert.ToInt32(dt.Rows[i]["productID"]) == proID)
130 {
131 //delete this row
132 dt.Rows.RemoveAt(i);
133 }
134 }
135 Session["shopCart"] = dt;
136 Repeater1.DataSource = dt.DefaultView;
137 Repeater1.DataBind();
138 GetTotal();
139 }
140 void GetTotal()
141 {
142 decimal total = 0;
143 DataTable dt = (DataTable)Session["shopCart"];
144 for (int i = 0; i < dt.Rows.Count; i++)
145 {
146 total += Convert.ToDecimal(dt.Rows[i]["subtotal"]);
147 }
148 LblTotal.Text = total.ToString();
149 }
150 #region//update your buy products' count
151 void UpdateBuyCount()
152 {
153 DataTable dt = (DataTable)Session["shopCart"];
154 Repeater1.DataSource = dt.DefaultView;
155 Repeater1.DataBind();
156 GetTotal();
157 for (int i = 0; i < Repeater1.Items.Count; i++)
158 {
159 if (Convert.ToInt32(((Literal)Repeater1.Items[i].FindControl("LitProductID")).Text) == int.Parse(cartProductID))
160 {
161 ((Label)Repeater1.Items[i].FindControl("LblBuyCount")).Visible = false;
162 ((TextBox)Repeater1.Items[i].FindControl("TxtBuyCount")).Visible = true;
163 ((HyperLink)Repeater1.Items[i].FindControl("HLUpdateBuyCount")).Visible = false;
164 ((LinkButton)Repeater1.Items[i].FindControl("LBtnUpdate")).Visible = true;
165 ((LinkButton)Repeater1.Items[i].FindControl("LBtnCancel")).Visible = true;
166 }
167 }
168 }
169 protected void LBtnUpdate_Click(object sender, EventArgs e)
170 {
171 //get the Textbox's count
172 DataTable dt = (DataTable)Session["shopCart"];
173 for (int i = 0; i < Repeater1.Items.Count; i++)
174 {
175 if (Convert.ToInt32(((Literal)Repeater1.Items[i].FindControl("LitProductID")).Text) == int.Parse(cartProductID))
176 {
177 int nowBuyCount = Convert.ToInt32(((TextBox)Repeater1.Items[i].FindControl("TxtBuyCount")).Text);
178 dt.Rows[i]["buyCount"] = nowBuyCount.ToString();
179 dt.Rows[i]["subtotal"] = Convert.ToInt32(dt.Rows[i]["unitPrice"]) * nowBuyCount;
180 Repeater1.DataSource = dt.DefaultView;
181 Repeater1.DataBind();
182 GetTotal();
183 }
184 }
185 }
186 protected void LBtnCancel_Click(object sender, EventArgs e)
187 {
188 DataTable dt = (DataTable)Session["shopCart"];
189 Repeater1.DataSource = dt.DefaultView;
190 Repeater1.DataBind();
191 GetTotal();
192 }
193 #endregion
194
195 public string productID
196 {
197 get
198 {
199 return Request.QueryString["productID"];
200 }
201 }
202 public string cartProductID
203 {
204 get
205 {
206 return Request.QueryString["cartProductID"];
207 }
208 }
209 }
210
2 using System.Collections;
3 using System.Configuration;
4 using System.Data;
5 using System.Linq;
6 using System.Web;
7 using System.Web.Security;
8 using System.Web.UI;
9 using System.Web.UI.HtmlControls;
10 using System.Web.UI.WebControls;
11 using System.Web.UI.WebControls.WebParts;
12 using System.Xml.Linq;
13
14 public partial class shopCart1 : System.Web.UI.Page
15 {
16 string sql = null;
17 DataSet ds = new DataSet();
18 protected void Page_Load(object sender, EventArgs e)
19 {
20 if (!IsPostBack)
21 {
22 if (productID != null)
23 {
24 GetShopCart();
25 }
26 else
27 {
28 if (cartProductID != null && cartProductID != "")
29 {
30 //update product's buyCount
31 UpdateBuyCount();
32 }
33 else
34 {
35 Response.Redirect("shopCart.aspx");
36 }
37 }
38 }
39 }
40 #region//Create a shopCart and put the product into it
41 void GetShopCart()
42 {
43 if (Session["shopCart"] == null||Session["shopCart"] =="")
44 {
45 //there has no cart
46 CreateCartTable();
47 }
48 PutInShopCart();
49 }
50 void PutInShopCart()
51 {
52 DataTable dt = new DataTable("myTable");
53 dt = (DataTable)Session["shopCart"];
54 bool hasone = false;
55 foreach (DataRow dr in dt.Rows)
56 {
57 if (int.Parse(productID) == Convert.ToInt32(dr["productID"]))
58 {
59 //select the same product,buyCount plus one
60 dr["buyCount"] = Convert.ToInt32(dr["buyCount"]) + 1;
61 dr["subtotal"] = Convert.ToInt32(dr["buyCount"]) * Convert.ToDecimal(dr["unitPrice"]);
62 hasone = true;
63 break;
64 }
65 else
66 {
67 hasone = false;
68 }
69 }
70 if (hasone == false)
71 {
72 //put the product into dt
73 sql = string.Format("select * from productTable where productID={0}", int.Parse(Request.QueryString["productID"]));
74 DataTable productTable = DataBase.ExecuteDataSet(sql).Tables[0];
75 DataRow rows;
76 rows = new DataTable("cartTable").NewRow();
77 int productID = Convert.ToInt32(productTable.Rows[0]["productID"]);
78 string productName = productTable.Rows[0]["productID"].ToString();
79 Decimal unitPrice = Convert.ToDecimal(productTable.Rows[0]["unitPrice"]);
80 int productTypeID = Convert.ToInt32(productTable.Rows[0]["productTypeID"]);
81 string productPic = productTable.Rows[0]["productPic"].ToString();
82 int buyCount = 1;
83 Decimal subtotal = buyCount * unitPrice;
84 dt.Rows.Add(productID, productName, unitPrice, productTypeID, productPic, buyCount,subtotal);
85 }
86 Session["shopCart"] = dt;
87 Repeater1.DataSource = dt.DefaultView;
88 Repeater1.DataBind();
89 GetTotal();
90 }
91 void CreateCartTable()
92 {
93 DataTable dtCart = new DataTable("cartTable");
94 DataColumn dc ;
95 dc = new DataColumn("productID", System.Type.GetType("System.Int32"));
96 dtCart.Columns.Add(dc);
97 dc = new DataColumn("productName", System.Type.GetType("System.String"));
98 dtCart.Columns.Add(dc);
99 dc = new DataColumn("unitPrice", System.Type.GetType("System.Decimal"));
100 dtCart.Columns.Add(dc);
101 dc = new DataColumn("productTypeID", System.Type.GetType("System.Int32"));
102 dtCart.Columns.Add(dc);
103 dc = new DataColumn("productPic", System.Type.GetType("System.String"));
104 dtCart.Columns.Add(dc);
105 dc = new DataColumn("buyCount", System.Type.GetType("System.Int32"));
106 dtCart.Columns.Add(dc);
107 dc = new DataColumn("subtotal", System.Type.GetType("System.Decimal"));
108 dtCart.Columns.Add(dc);
109 ds.Tables.Add(dtCart);
110
111 Session["shopCart"] = dtCart;
112 Repeater1.DataSource = dtCart.DefaultView;
113 Repeater1.DataBind();
114 }
115 #endregion
116 protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
117 {
118 if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
119 {
120 ((ImageButton)e.Item.FindControl("ImgDel")).Attributes.Add("onclick", "return confirm('确定要删除吗?')");
121 }
122 }
123 protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
124 {
125 int proID = Convert.ToInt32(((Literal)e.Item.FindControl("LitProductID")).Text.ToString());
126 DataTable dt = (DataTable)Session["shopCart"];
127 for (int i = 0; i < dt.Rows.Count;i++ )
128 {
129 if (Convert.ToInt32(dt.Rows[i]["productID"]) == proID)
130 {
131 //delete this row
132 dt.Rows.RemoveAt(i);
133 }
134 }
135 Session["shopCart"] = dt;
136 Repeater1.DataSource = dt.DefaultView;
137 Repeater1.DataBind();
138 GetTotal();
139 }
140 void GetTotal()
141 {
142 decimal total = 0;
143 DataTable dt = (DataTable)Session["shopCart"];
144 for (int i = 0; i < dt.Rows.Count; i++)
145 {
146 total += Convert.ToDecimal(dt.Rows[i]["subtotal"]);
147 }
148 LblTotal.Text = total.ToString();
149 }
150 #region//update your buy products' count
151 void UpdateBuyCount()
152 {
153 DataTable dt = (DataTable)Session["shopCart"];
154 Repeater1.DataSource = dt.DefaultView;
155 Repeater1.DataBind();
156 GetTotal();
157 for (int i = 0; i < Repeater1.Items.Count; i++)
158 {
159 if (Convert.ToInt32(((Literal)Repeater1.Items[i].FindControl("LitProductID")).Text) == int.Parse(cartProductID))
160 {
161 ((Label)Repeater1.Items[i].FindControl("LblBuyCount")).Visible = false;
162 ((TextBox)Repeater1.Items[i].FindControl("TxtBuyCount")).Visible = true;
163 ((HyperLink)Repeater1.Items[i].FindControl("HLUpdateBuyCount")).Visible = false;
164 ((LinkButton)Repeater1.Items[i].FindControl("LBtnUpdate")).Visible = true;
165 ((LinkButton)Repeater1.Items[i].FindControl("LBtnCancel")).Visible = true;
166 }
167 }
168 }
169 protected void LBtnUpdate_Click(object sender, EventArgs e)
170 {
171 //get the Textbox's count
172 DataTable dt = (DataTable)Session["shopCart"];
173 for (int i = 0; i < Repeater1.Items.Count; i++)
174 {
175 if (Convert.ToInt32(((Literal)Repeater1.Items[i].FindControl("LitProductID")).Text) == int.Parse(cartProductID))
176 {
177 int nowBuyCount = Convert.ToInt32(((TextBox)Repeater1.Items[i].FindControl("TxtBuyCount")).Text);
178 dt.Rows[i]["buyCount"] = nowBuyCount.ToString();
179 dt.Rows[i]["subtotal"] = Convert.ToInt32(dt.Rows[i]["unitPrice"]) * nowBuyCount;
180 Repeater1.DataSource = dt.DefaultView;
181 Repeater1.DataBind();
182 GetTotal();
183 }
184 }
185 }
186 protected void LBtnCancel_Click(object sender, EventArgs e)
187 {
188 DataTable dt = (DataTable)Session["shopCart"];
189 Repeater1.DataSource = dt.DefaultView;
190 Repeater1.DataBind();
191 GetTotal();
192 }
193 #endregion
194
195 public string productID
196 {
197 get
198 {
199 return Request.QueryString["productID"];
200 }
201 }
202 public string cartProductID
203 {
204 get
205 {
206 return Request.QueryString["cartProductID"];
207 }
208 }
209 }
210