本文實(shí)例講述了asp.net基于HashTable實(shí)現(xiàn)購物車的方法。分享給大家供大家參考,具體如下:
1
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
|
//用戶購買商品時 if (e.CommandName.ToLower() == "buy" ) { //判斷用戶購物車是否為空 如果為空則分配一個 Hashtable table; if (Session[ "car" ] == null ) { table = new Hashtable(); } else { //用戶購物車己存在 則取出數(shù)據(jù) table = Session[ "car" ] as Hashtable; } //如果用戶購物車中不包括該商品信息 則添加一個新商品 if (!table.Contains(e.CommandArgument)) { table.Add(e.CommandArgument, 1); //添加一個新商品 數(shù)量為1 } else { //如果購物車己存在該商品信息 則將該商品的數(shù)量加1 根據(jù)HashTable的鍵獲取相對應(yīng)的值 int count = Convert.ToInt32(table[e.CommandArgument].ToString()); //給該商品數(shù)量加上1 table[e.CommandArgument] = (count + 1); } //保存商品信息 Session[ "car" ] = table; Response.Redirect( "shoppingcar.aspx" ); } //商品信息列表 private void shoplist() { Hashtable table; if (Session[ "car" ] == null ) { table = new Hashtable(); } else { table = Session[ "car" ] as Hashtable; } if (table.Count == 0) { Image13.Visible = true ; Msg.Visible = true ; Msg.Text = "<b style=" color:red " mce_style=" color:red ">您還沒有購物呢?趕快購物吧!</b>" ; } string [] Arrkey = new string [table.Count]; int [] ArrVal = new int [table.Count]; table.Keys.CopyTo(Arrkey, 0); table.Values.CopyTo(ArrVal, 0); //定義字符串 形成 ('1,2,3') string Products = "('" ; int k = 0; for ( int j = 0; j < Arrkey.Length; j++) { if (k>0)Products += "','" ; k++; Products += Arrkey.GetValue(j).ToString(); } Products += "')" ; DataSet ds = productbll.GetInfoByWhere( " pid in " + Products); DataTable Table1 = new DataTable(); Table1 = ds.Tables[0]; Table1.Columns.Add( new DataColumn( "shuliang" , System.Type.GetType( "System.Int32" ))); //得到pid的值 并將它設(shè)置為Table1的主鍵 DataColumn[] keys = { Table1.Columns[ "pid" ]}; Table1.PrimaryKey = keys; foreach ( string key in table.Keys) { Table1.Rows.Find(key)[ "shuliang" ] = table[key]; //根據(jù)鍵獲取值 商品的數(shù)量 } Table1.Columns.Add( new DataColumn( "zongjia" , System.Type.GetType( "System.Double" ), "hotprice*shuliang" )); for ( int n = 0; n < Table1.Rows.Count; n++) { tPrice +=Convert.ToDouble(Table1.Rows[n][ "zongjia" ]); } Label1.Text = tPrice.ToString(); Session[ "total" ] = Label1.Text.ToString(); MyGrid.DataSource = Table1.DefaultView; MyGrid.DataBind(); } #region 從購物車中刪除一條商品信息 protected void MyGrid_RowCommand( object sender, GridViewCommandEventArgs e) { Hashtable table; if (Session[ "car" ] == null ) { table = new Hashtable(); } else { table = Session[ "car" ] as Hashtable; } //如果點(diǎn)擊刪除按鈕 則從購物車中移除該商品信息 if (e.CommandName.ToLower() == "delete" ) { if (table.ContainsKey(e.CommandArgument)) { //從HashTable中移除該商品的信息(商品編號) 鍵:為商品編號 值為:商品數(shù)量 table.Remove(e.CommandArgument); } Msg.Text = ( string )e.CommandArgument; } Session[ "car" ] = table; //調(diào)用方法 shoplist(); } #endregion |
希望本文所述對大家asp.net程序設(shè)計有所幫助。