首页 > 编程 > .NET > 正文

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

2024-07-10 12:47:34
字体:
来源:转载
供稿:网友

本文实例讲述了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            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表