profile 实现购物车 实例 (二)

上个例子,我见了两个类,一个商品类。一个购物车类。并把购物城类设置成了 profile 的提供程序类。

还是先弄个商品列表吧,好买东西。

这里的代码应该就不用贴了。用 用户控件啊,datalsit 随便怎么都行啊。我这里用的是datalist。总之没个商品项里面要带一个 addtocart (添加此商品到购物车)

这里不难理解。来看看这个 datalist 的购买按钮该怎么写吧

那个ADDTO 那里就是我弄的ImageButton,设置它的 CommadName 属性为 buy.

给ImageButton 的 CommandArgment 这个属性帮顶个字段 Eval("Oilid"),当然这个我数据源中的那个 id字段。

然后给 datalist 添加一个 ItemCommand 的处理函数。

接下来就来写这个事件的内部了

代码
protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
    {
        
if (e.CommandName=="buy")
        {
           
            
//e.CommandArgument 为OilId
            SqlConnection conn = Datacaozuo.conn;
            
string sqlstr = "SELECT OilId,Oilname,Oilprice,OilimageUrl FROM Oil_product WHERE OilId='" + e.CommandArgument + "'";
            SqlDataAdapter adapter 
= new SqlDataAdapter(sqlstr, conn);
            DataSet da 
= new DataSet();
            adapter.Fill(da, 
"temp");
            
string  name,imageurl;
            
decimal price;
            Guid id 
= (Guid)da.Tables["temp"].Rows[0][0];
            name 
= da.Tables["temp"].Rows[0][1].ToString();
            price 
= decimal.Parse(da.Tables["temp"].Rows[0][2].ToString());
            imageurl 
= da.Tables["temp"].Rows[0][3].ToString();
            Profile.ShoppingCart.AddCartItem(
new CartItem(id,name,price,imageurl));
        }
        
else
        {
            Response.Write(
"错了");
        }
    }

这样 e.CommandArgment 返回的就是数据项的 id ,不知道其他人知道不知道。反正我费了不少劲才搞懂这里。索性就都写上了。毕竟这还是针新手的随笔

这个消息函数就实现了向购物车中去添加商品的功能了。可以看看上个教程里的两个类 AddCarItem(...)就是添加商品的类。

---------------------------------------------------------------------------------------------------------------------------------------------------

现在就来查看购物车吧。看看我们都在这个商城里都买了什么东西吧。

代码
protected void Page_Load(object sender, EventArgs e)
    {
        DataList1.DataSource 
= Profile.ShoppingCart.CartItems;
        DataList1.DataBind();
        
if (!IsPostBack)
        {
            Label1.Text 
= "Total Price = " + Profile.ShoppingCart.Total.ToString() + "$";
        }
    }

如此简单。购物车的雏形就形成了

Response.Redirect("Account/Account.aspx?total=" + Profile.ShoppingCart.Total);

这样就能去 Account 这个页面去付款了。

也可以形成个后台的订单,便于查收。

原文地址:https://www.cnblogs.com/cestbon/p/1669174.html