asp.net基于session实现购物车的方法
本文实例讲述了asp.net基于session实现购物车的方法。分享给大家供大家参考,具体如下:
//加入购物车
protectedvoidLinkButton2_Click(objectsender,EventArgse)
{
DataTabledt=null;
//用户购买商品如果没有登录则提示登录
if(Session["userName"]==null)
{
Common.MessageBox.ShowAndRedirectTo(this.Page,"请先登录再购买商品!","Login.aspx");
}
else
{
//如果己经登录则根据接收过来的商品编号根据该商品编号来获取该商品的详细信息(返回实体类)
//返回信息有商品编号商品名称商品市场价商品的大小(siz)图片(image)重量总价购买数量总共要支付的钱商品总重量
Model.productmodel=newModel.product();
//根据商品编号获取该商品详细信息
model.id=(int)Request.QueryString.GetValues("uid")[0];
System.Data.SqlClient.SqlDataReadersdr=DAL.product.drpr(model);
if(Session["ShopCar"]==null)
{
dt=newDataTable();
//商品编号
dt.Columns.Add("id",typeof(Int32));
//商品价格(本站价格)
dt.Columns.Add("localprice",typeof(Double));
//商品发布价格
dt.Columns.Add("posttime",typeof(String));
//购买数量
dt.Columns.Add("buycount",typeof(Int32));
//商品总价
dt.Columns.Add("sumprice",typeof(Int32));
//颜色
dt.Columns.Add("color",typeof(String));
//商品大小
dt.Columns.Add("size",typeof(String));
//商品名称
dt.Columns.Add("title",typeof(String));
//商品类型
dt.Columns.Add("cate",typeof(String));
//商品图片
dt.Columns.Add("image",typeof(String));
//商品时间
dt.Columns.Add("only",typeof(String));
//商品重量
dt.Columns.Add("weight",typeof(String));
//商品总重量
dt.Columns.Add("sumweight",typeof(String));
}
else
{
//如果购物车不为空时刚判断该商品的信息是否存在购物车中如果存在则把该商品的数量加上1
dt=Session["ShopCar"]asDataTable;
for(intj=0;j<dt.Rows.Count;j++)
{
//如果读到该商品的编号则该商品己经存在则将该商品的数量加1
if(dt.Rows[j]["id"].ToString()=model.id.ToString()&&Convert.ToString(dt.Rows[i]["color"])==d_color.Text)
{
//如果商品己经存在则购买数量加上1
dt.Rows[j]["buycount"]=Convert.ToInt32(dt.Rows[j]["buycount"])+1;
//Session保存购物车
Session["ShopCar"]=dt;
Response.Redirect("ShoppingCar.aspx");
return;
}
}
}
//如果该商品信息不存在购物车中则添加一个新的商品信息
DataRowrow=dt.NewRow();
if(dr.Read())
{
//商品的重量
row["weight"]=sdr["_weight"].ToString();
//商品的总重量
row["sumweight"]=sdr["_weight"].ToString();
//商品购买时间
row["only"]=DateTime.Now.ToString("yyyyMMddhhmmssfff");
//商品型号
row["size"]=_size.Text;
//商品图片
row["image"]=Image_1.ImageUrl;
//商品类型名称
row["cate"]=cate_name.Text;
//商品名称
row["title"]=title_l.Text;
//商品颜色
row["color"]=d_color.Text;
//商品编号
row["id"]=Convert.ToInt32(dr["_id"].ToString());
//商品本站价格
row["localprice"]=Convert.ToDouble(sdr["_localprice"].ToString());
//商品发布时间
row["posttime"]=Convert.ToString(sdr["_posttime"].ToString());
//购买数量默认为1
row["buycount"]=1;
//商品总价
row["sumprice"]=Convert.ToDouble(sdr["_localprice"].ToString());
dt.Rows.Add(row);
}
dr.Close();
//保存商品信息
Session["dt"]=dt;
Response.Redirect("shoplist.aspx");
}
}
//获取商品信息(商品总重量总价格)
privatevoidGetCountInfo()
{
DataTabledt=null;
if(Session["ShopCar"]!=null)
{
//显示提示信息
Label1.Visible=true;
}
else
{
dt=Session["ShopCar"]asDataTable;
for(intj=0;j<dt.Rows.Count;j++)
{
//获取单个商品的总价(计算公式:商品的数量乘以商品的价格)
dt.Rows[j]["sumprice"]=Convert.ToInt32(dt.Rows[j]["localprice"]*Convert.ToInt32(dt.Rows[j]["buycount"]));
//获取单个商品的总重量(计算公式:购买的商品数量乘以商品的单个重量)
dt.Rows[j]["sumweight"]=Convert.ToInt32(dt.Rows[j]["weight"]*Convert.ToInt32(dt.Rows[j]["buycount"]));
//保存信息
Session["ShopCar"]=dt;
//显示用户购物车的所有商品信息
ShowShoppingCarInfo();
}
}
}
///<summary>
///显示购买的商品信息
///</summary>
privatevoidShowShoppingCarInfo()
{
DataTabledt=null;
//定义获取商品总价格变量
doublewholePrice=0;
//定义获取商品的总重量变量
doublewholeWeight=0;
//用户己经购买
if(Session["ShopCar"]!=null)
{
dt=Session["ShopCar"]asDataTable;
for(intj=0;j<dt.Rows.Count;j++)
{
//获取所有商品总价格
wholePrice+=Convert.ToDouble(dt.Rows[j]["sumprice"]);
//获取商品的总重量
wholeWeight+=Convert.ToDouble(dt.Rows[j]["sumweight"]);
}
//总价格
wprice.Text=wholeprice.ToString();
//总重量
wweight.Text=wholeweight.ToString();
//保存商品总价格
Session["wholeprice"]=wholeprice;
//保存商品总重量
Session["wholeweight"]=wholeweight;
//商品总项数
wholeprocount.Text=Convert.ToString(dt.Rows.Count);
//保存商品的总项
Session["wholeprocount"]=wholeprocount.Text;
//如果项数为空时
if(dt.Rows.Count==0)
{
//显示用户未购买商品
Label1.Visible=true;
}
}
else
{
//如果没有购买商品则显示提示信息
Label1.Visible=true;
GridView1.DataSource=null;
GridView1.DataBind();
}
}
从购物车移除一件商品:Row_Command
if(e.CommandName=="del")
{
DataTabledt=Session["ShopCar"]asDataTable;
for(intj=0;j<dt.Rows.count;j++){
if(dt.Rows[j]["only"]==e.CommandArgument)
{
dt.Rows.Remove(j);
}
}
}
希望本文所述对大家asp.net程序设计有所帮助。