欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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程序设计有所帮助。