asp.net基于HashTable实现购物车的方法
程序员文章站
2024-02-11 23:45:46
本文实例讲述了asp.net基于hashtable实现购物车的方法。分享给大家供大家参考,具体如下:
//用户购买商品时
if (e.commandname.t...
本文实例讲述了asp.net基于hashtable实现购物车的方法。分享给大家供大家参考,具体如下:
//用户购买商品时 if (e.commandname.tolower() == "buy") { //判断用户购物车是否为空 如果为空则分配一个 hashtable table; if (session["car"] == null) { table = new hashtable(); } else { //用户购物车己存在 则取出数据 table = session["car"] as hashtable; } //如果用户购物车中不包括该商品信息 则添加一个新商品 if (!table.contains(e.commandargument)) { table.add(e.commandargument, 1);//添加一个新商品 数量为1 } else { //如果购物车己存在该商品信息 则将该商品的数量加1 根据hashtable的键获取相对应的值 int count = convert.toint32(table[e.commandargument].tostring()); //给该商品数量加上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的值 并将它设置为table1的主键 datacolumn[] keys = { table1.columns["pid"]}; table1.primarykey = keys; foreach (string key in table.keys) { table1.rows.find(key)["shuliang"] = table[key];//根据键获取值 商品的数量 } 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; } //如果点击删除按钮 则从购物车中移除该商品信息 if (e.commandname.tolower() == "delete") { if (table.containskey(e.commandargument)) { //从hashtable中移除该商品的信息(商品编号) 键:为商品编号 值为:商品数量 table.remove(e.commandargument); } msg.text = (string)e.commandargument; } session["car"] = table; //调用方法 shoplist(); } #endregion
希望本文所述对大家asp.net程序设计有所帮助。