2012-07-30 84 views
1

我试图将项目添加到存储在会话中的购物车,但是当我将新产品添加到购物车时会话值被覆盖。以前的值被覆盖的列表

private List<int> newCart = new List<int>(); 
    protected void dlstCartItems_ItemCommand(object source, DataListCommandEventArgs e) 
    { 

     if (e.CommandName == "AddToCart") 
     { 
      var arg = e.CommandArgument; 
      DropDownList ddlList = e.Item.FindControl("ddlAvailableSizes"+e.CommandArgument) as DropDownList; 
      int currentItemID = int.Parse(this.dlstCartItems.DataKeys[e.Item.ItemIndex].ToString()); 
      if (ddlList.SelectedIndex == 0) 
      { 
       ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alert", "alert('Please Select Size');", true); 
      } 
      else 
      { 

       newCart.Add(Convert.ToInt32(e.CommandArgument)); 
       Session["Cart"] = newCart; 
       if (Session["Cart"] != null) 
       { 

        int ct = ((List<int>)Session["Cart"]).Count; 
        lblCartMessage.Text = Convert.ToString(ct)+" "+"Product"; 

       } 


      } 



     } 
    } 

我的问题是,当我不断添加新产品老产品在列表中没有更多的存在和产品数量始终是1

回答

2

中,u是添加应被定义列表一个班级。无论何时添加新产品,私人列表newCart = new List();不应该执行,否则它会使添加后的计数为零,您将只剩下最新的添加。

+0

是的,这是发生了什么事情 – Tan 2012-07-30 09:30:25

0

也许newcart总是空的dlstCartItems_ItemCommand的执行,因此

Session["Cart"] = newCart; 

清除值

2

你被Session["Cart"] = newCart;重写车。 为了做到这个写:

newCart = Session["Cart"] as List<int>; 
if (newCart == null) 
{ 
    newCart = new List<int>(); 
    Session["Cart"] = newCart; 
} 

// Rest of the code adding to newCart etc. 
0

保护无效dlstCartItems_ItemCommand(对象源,DataListCommandEventArgs E) { 列表newCart;

if (e.CommandName == "AddToCart") 
    { 
     var arg = e.CommandArgument; 
     DropDownList ddlList = e.Item.FindControl("ddlAvailableSizes" + e.CommandArgument) as DropDownList; 
     int currentItemID = int.Parse(this.dlstCartItems.DataKeys[e.Item.ItemIndex].ToString()); 
     if (ddlList.SelectedIndex == 0) 
     { 
      ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alert", "alert('Please Select Size');", true); 
     } 
     else 
     { 

      if (Session["Cart"] == null) 
      { 
       newCart = new List<int>(); 
       newCart.Add(Convert.ToInt32(e.CommandArgument)); 
       Session["Cart"] = newCart; 
      } 
      else 
      { 
       newCart = Session["Cart"] as List<int>; 
       newCart.Add(Convert.ToInt32(e.CommandArgument)); 
       Session["Cart"] = newCart; 
      } 





      int ct = ((List<int>)Session["Cart"]).Count; 
      lblCartMessage.Text = Convert.ToString(ct) + " " + "Product"; 




     } 



    } 
}