幽灵资源网 Design By www.bzswh.com
本文实例讲述了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程序设计有所帮助。
幽灵资源网 Design By www.bzswh.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
幽灵资源网 Design By www.bzswh.com
暂无评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。