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になることです。

4

4 に答える 4

2

uが追加するリストは、クラスレベルで定義する必要があります。新しい商品を追加するときはいつでも、private List newCart = new List(); 実行しないでください。実行しないと、加算後にカウントがゼロになり、最新の加算のみが残ります。

于 2012-07-30T09:21:29.823 に答える
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.
于 2012-07-30T09:21:48.250 に答える
0

おそらく、dlstCartItems_ItemCommandの実行時にnewcartは常に空であるため、

Session["Cart"] = newCart; 

値をクリアします

于 2012-07-30T09:21:47.463 に答える
-1

protected void dlstCartItems_ItemCommand(object source、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";




        }



    }
}
于 2012-07-30T11:10:04.343 に答える