当前位置: 移动技术网 > IT编程>开发语言>.net > asp.net基于HashTable实现购物车的方法

asp.net基于HashTable实现购物车的方法

2017年12月12日  | 移动技术网IT编程  | 我要评论

在线支付,帝王妻19楼,魏三东北二人转

本文实例讲述了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程序设计有所帮助。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网