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