1
<%@ Page language="c#" CodeFile="Default2.aspx.cs" AutoEventWireup="false" Inherits="myshop.shoppingcart" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" ><HTML> <HEAD>
2
<title>shoppingcart</title>
3
<meta http-equiv="Content-Type" content="text/html;
4
charset=gb2312"> <LINK href="mycss.css" type="text/css" rel="stylesheet">
5
<meta name="vs_defaultClientScript" content="JavaScript">
6
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> </HEAD>
7
<body> <center>
8
<form id="Form1" runat="server"> <table width="500" border="0" cellspacing="0" cellpadding="0"> <tr> <td>
9
<asp:DataGrid id="ShoppingCartDlt" runat="server" Width="500" BackColor="white" BorderColor="black" ShowFooter="false" CellPadding="3" CellSpacing="0" Font-Name="Verdana" Font-Size="8pt" HeaderStyle-BackColor="#cecfd6" AutoGenerateColumns="false" MaintainState="true"> <Columns>
10
<asp:TemplateColumn HeaderText="删除">
11
<ItemTemplate> <center>
12
<asp:CheckBox id="chkProductID" runat="server" /> </center>
13
</ItemTemplate> </asp:TemplateColumn>
14
<asp:BoundColumn DataField="ProdID" HeaderText="ID" />
15
<asp:BoundColumn DataField="ProName" HeaderText="商品名称" />
16
<asp:BoundColumn DataField="UnitPrice" HeaderText="单价" />
17
<asp:TemplateColumn HeaderText="数量">
18
<ItemTemplate>
19
<asp:TextBox id="CountTb" runat="server" Text='<%#DataBinder.Eval( Container.DataItem,"ProdCount" )%>'> </asp:TextBox>
20
</ItemTemplate> </asp:TemplateColumn>
21
<asp:BoundColumn DataField="TotalPrice" HeaderText="小计( 元 )" /> </Columns> </asp:DataGrid></td> </tr> </table> <br> <table width="500" border="0" cellspacing="0" cellpadding="0"> <tr> <td>
22
<asp:Button id="update" runat="server" Text="更新我的购物车" CssClass="button2" OnClick="update_Click" /></td> <td>
23
<asp:Button id="CheckOut" runat="server" Text="结算" CssClass="button5" />
24
25
<input type="button" name="close2" value="继续购物" onClick="window.close( );
26
return false;
27
" class="button2"></td> <td align="right"><br>
28
<asp:Label id="label" runat="server" Width="100px" Visible="True" ForeColor="#FF8080" Height="18px"></asp:Label></td> </tr> </table>
29
</form> </center>
30
</body></HTML>

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

1
using System;
2
using System.Collections;
3
using System.ComponentModel;
4
using System.Web.SessionState;
5
using System.Web;
6
using System.Web.UI;
7
using System.Web.UI.HtmlControls;
8
using System.Web.UI.WebControls;
9
using System.Data;
10
using System.Data.OleDb;
11
using System.Configuration;
12
namespace myshop
13
{
14
/// <summary> /// shoppingcart 的摘要说明. /// </summary>
15
public class shoppingcart : System.Web.UI.Page
16
{
17
string AddProID;
18
private void Page_Load(object sender, System.EventArgs e)
19
{
20
try
21
{
22
if (Session["logon"] != "yes" || Session["username"] == null)
23
{
24
Response.Redirect("error.htm");
25
}
26
}
27
catch
28
{
29
Response.Redirect("error.htm");
30
}
31
/////////////查看用户是否已经登陆.
32
if (!IsPostBack)
33
{
34
if (Request.Params["mode"] == "view") //检测是否为直接查看购物车.
35
{
36
ViewShoppingCart();
37
Caculator();
38
}
39
if (Request.Params["productID"] != null || Request.Params["productID"] != "")
40
{
41
AddProID = Request["productID"];
42
UpdateShoppingCart();
43
Caculator();
44
}
45
}
46
// 在此处放置用户代码以初始化页面
47
}
48
public void CreateCartTable() //创建购物车
49
{
50
DataSet ds = new DataSet();
51
DataTable newDT = new DataTable("CartTable");
52
ds.Tables.Add(newDT);
53
DataColumn newDC;
54
newDC = new DataColumn("ProdID", System.Type.GetType("System.Int32"));
55
ds.Tables["CartTable"].Columns.Add(newDC);
56
newDC = new DataColumn("ProdCount", System.Type.GetType("System.Int32"));
57
newDC.DefaultValue = 1;
58
ds.Tables["CartTable"].Columns.Add(newDC);
59
newDC = new DataColumn("ProName", System.Type.GetType("System.String"));
60
ds.Tables["CartTable"].Columns.Add(newDC);
61
newDC = new DataColumn("UnitPrice", System.Type.GetType("System.Double"));
62
ds.Tables["CartTable"].Columns.Add(newDC);
63
newDC = new DataColumn("TotalPrice", System.Type.GetType("System.Double"));
64
ds.Tables["CartTable"].Columns.Add(newDC);
65
newDC = new DataColumn("IsDeleted", System.Type.GetType("System.Int32"));
66
newDC.DefaultValue = 0;
67
// public void WriteShoppingCart( ) 中 newDR[5]="0";行,已被注销, ds.Tables["CartTable"].Columns.Add( newDC );
68
Session["myCartTable"] = newDT;
69
ShoppingCartDlt.DataSource = ds.Tables["CartTable"].DefaultView;
70
ShoppingCartDlt.DataBind();
71
}
72
73
public void UpdateShoppingCart()
74
{
75
if (Session["myCartTable"] == null)//Session["myCartTable"]==null
76
{
77
CreateCartTable();
78
//调用函数CreateCartTable( )新建一个DataTable WriteShoppingCart( );
79
}
80
else
81
{
82
//如果购物蓝中已有商品,则需要对购物信息表DataTable进行更新,并将其棒定到ShoppingCartDlt WriteShoppingCart( );
83
}
84
}
85
public void ViewShoppingCart() //查看购物车
86
{
87
if (Session["myCartTable"] != null)
88
{
89
DataTable viewTable = new DataTable("nowCartTable");
90
viewTable = (DataTable)Session["myCartTable"];
91
ShoppingCartDlt.DataSource = viewTable.DefaultView;
92
//购物车棒定到ShoppingCartDlt ShoppingCartDlt.DataBind( );
93
}
94
}
95
public void WriteShoppingCart()
96
{
97
if (Request.Params["mode"] != "view") //检查是否是直接查看购物车,如果直接查看,就不再写MYCARTTABLE
98
{
99
DataTable nowTable = new DataTable("nowCartTable");
100
nowTable = (DataTable)Session["myCartTable"];
101
int pn = nowTable.Rows.Count;
102
int i = 0;
103
bool hasone = false;
104
int nowProdID;
105
while (i < pn && !hasone)
106
{
107
nowProdID = Int32.Parse(nowTable.Rows[i][0].ToString());
108
if (nowProdID == Int32.Parse(AddProID)) //判断购物信息表中,是否存有当前放入商品. if( nowProdID==Int32.Parse( AddProID ) )
109
{
110
hasone = true;
111
}
112
else
113
{
114
i++;
115
}
116
}
117
if (hasone)
118
{
119
//如果已有该商品,则 hasone=true,更改该数据行 DataRow oldDR;
120
oldDR = nowTable.Rows[i];
121
oldDR["ProdCount"] = Int32.Parse(oldDR["ProdCount"].ToString()) + 1;
122
oldDR["TotalPrice"] = Int32.Parse(oldDR["ProdCount"].ToString()) * Double.Parse(oldDR["UnitPrice"].ToString());
123
}
124
else
125
{
126
//如果没有该商品,在表中新加如一行. DataRow newDR;
127
double unitp;
128
String strcon = "provider=Microsoft.jet.OLEDB.4.0;data Source=" + Server.MapPath(ConfigurationSettings.AppSettings["MDBpath2"]) + ";";
129
OleDbConnection myConnection = new OleDbConnection(strcon);
130
string strSQL = "select * from pro where product_id=" + AddProID + "";
131
OleDbDataAdapter myCommand = new OleDbDataAdapter(strSQL, myConnection);
132
DataSet ds = new DataSet();
133
myCommand.Fill(ds, "AddP");
134
newDR = nowTable.NewRow();
135
newDR[0] = AddProID;
136
newDR[2] = ds.Tables["Addp"].Rows[0]["product_name"].ToString();
137
unitp = Double.Parse(ds.Tables["AddP"].Rows[0]["product_memprice"].ToString());
138
//会员价 newDR[3]=unitp;
139
newDR[4] = unitp;
140
//第一次读库,所以总价格和单价是一样的. //newDR[5]="0";
141
nowTable.Rows.Add(newDR);
142
myConnection.Close();
143
}
144
ShoppingCartDlt.DataSource = nowTable.DefaultView;
145
//将更新后的 DataTable棒定到ShoppingCartDlt ShoppingCartDlt.DataBind( );
146
Session["myCartTable"] = nowTable;
147
//重新保存更新过的DataTable
148
}
149
}
150
public void Caculator()
151
{
152
if (Session["myCartTable"] != null) //购物车是否为空
153
{
154
int h;
155
Double TotalPri;
156
TotalPri = 0;
157
DataTable nowTable3 = new DataTable("nowCartTable3");
158
nowTable3 = (DataTable)Session["myCartTable"];
159
if (nowTable3.Rows.Count > 0) //返回购物车中是否有货物
160
{
161
for (h = 0;
162
h <= nowTable3.Rows.Count - 1;
163
h++)
164
{
165
TotalPri = TotalPri + Int32.Parse(nowTable3.Rows[h][4].ToString());
166
//Double.Parse( ( string )TotalText.Text );
167
}
168
label.Text = "总计: " + TotalPri.ToString() + " 元";
169
}
170
}
171
}
172
173
174
public void Update()
175
{
176
int i;
177
int j;
178
int k;
179
ArrayList deleteItem = new ArrayList(10);
180
DataGridItem _item;
181
j = 0;
182
int deleteid;
183
k = 0;
184
DataTable nowTable2 = new DataTable("nowCartTable2");
185
nowTable2 = (DataTable)Session["myCartTable"];
186
for (i = 0;
187
i <= this.ShoppingCartDlt.Items.Count - 1;
188
i++)
189
{
190
_item = this.ShoppingCartDlt.Items[i];
191
TextBox CountText = (TextBox)this.ShoppingCartDlt.Items[i].Cells[4].FindControl("CountTb");
192
//Controls[1];
193
//_item.FindControl( "CountTb" );
194
CheckBox ProductIDCheck = (CheckBox)_item.FindControl("chkProductID");
195
nowTable2.Rows[i][1] = Int32.Parse(CountText.Text.ToString());
196
nowTable2.Rows[i][4] = Int32.Parse(nowTable2.Rows[i][1].ToString()) * Double.Parse(nowTable2.Rows[i][3].ToString());
197
if (ProductIDCheck.Checked)
198
{
199
nowTable2.Rows[i][5] = 1;
200
//添加删除标记1 j=j+1;
201
}
202
}
203
string strExpr = "IsDeleted>0";
204
//http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpref/html/frlrfSystemDataDataTableClassSelectTopic.asp DataRow[] foundRows = nowTable2.Select( strExpr );
205
for (int m = 0;
206
m < foundRows.Length;
207
m++)
208
{
209
//Console.WriteLine( foundRows[i][0] );
210
foundRows[m].Delete();
211
}
212
ShoppingCartDlt.DataSource = nowTable2.DefaultView;
213
ShoppingCartDlt.DataBind();
214
Session["myCartTable"] = nowTable2;
215
Caculator();
216
}
217
Web 窗体设计器生成的代码
231
private void update_Click(object sender, System.EventArgs e)
232
{
233
Update();
234
}
235
private void CheckOut_Click(object sender, System.EventArgs e)
236
{
237
Update();
238
Response.Redirect("checkout.aspx");
239
}
240
}
241
}

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

231

232

233

234

235

236

237

238

239

240

241
