asp.net基于HashTable实现购物车的方法
本文实例讲述了asp.net基于HashTable实现购物车的方法。分享给大家供大家参考,具体如下:
//用户购买商品时 if(e.CommandName.ToLower()=="buy") { //判断用户购物车是否为空如果为空则分配一个 Hashtabletable; if(Session["car"]==null) { table=newHashtable(); } else { //用户购物车己存在则取出数据 table=Session["car"]asHashtable; } //如果用户购物车中不包括该商品信息则添加一个新商品 if(!table.Contains(e.CommandArgument)) { table.Add(e.CommandArgument,1);//添加一个新商品数量为1 } else { //如果购物车己存在该商品信息则将该商品的数量加1根据HashTable的键获取相对应的值 intcount=Convert.ToInt32(table[e.CommandArgument].ToString()); //给该商品数量加上1 table[e.CommandArgument]=(count+1); } //保存商品信息 Session["car"]=table; Response.Redirect("shoppingcar.aspx"); } //商品信息列表 privatevoidshoplist() { Hashtabletable; if(Session["car"]==null) { table=newHashtable(); } else { table=Session["car"]asHashtable; } if(table.Count==0) { Image13.Visible=true; Msg.Visible=true; Msg.Text="<bstyle="color:red"mce_style="color:red">您还没有购物呢?赶快购物吧!</b>"; } string[]Arrkey=newstring[table.Count]; int[]ArrVal=newint[table.Count]; table.Keys.CopyTo(Arrkey,0); table.Values.CopyTo(ArrVal,0); //定义字符串形成('1,2,3') stringProducts="('"; intk=0; for(intj=0;j<Arrkey.Length;j++) { if(k>0)Products+="','";k++; Products+=Arrkey.GetValue(j).ToString(); } Products+="')"; DataSetds=productbll.GetInfoByWhere("pidin"+Products); DataTableTable1=newDataTable(); Table1=ds.Tables[0]; Table1.Columns.Add(newDataColumn("shuliang",System.Type.GetType("System.Int32"))); //得到pid的值并将它设置为Table1的主键 DataColumn[]keys={Table1.Columns["pid"]}; Table1.PrimaryKey=keys; foreach(stringkeyintable.Keys) { Table1.Rows.Find(key)["shuliang"]=table[key];//根据键获取值商品的数量 } Table1.Columns.Add(newDataColumn("zongjia",System.Type.GetType("System.Double"),"hotprice*shuliang")); for(intn=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从购物车中删除一条商品信息 protectedvoidMyGrid_RowCommand(objectsender,GridViewCommandEventArgse) { Hashtabletable; if(Session["car"]==null) { table=newHashtable(); } else { table=Session["car"]asHashtable; } //如果点击删除按钮则从购物车中移除该商品信息 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程序设计有所帮助。