簡體   English   中英

奇怪的ASP.net標簽和回發問題

[英]Strange ASP.net label and postback issue

就目前所見,我將盡可能准確,准確地描述此錯誤,這似乎是隨機的。

為了提供一些背景信息,我正在一家網上商店,用戶單擊“添加”按鈕以從我的gridview的模板字段中將商品添加到他們的購物車中。 這將獲取他們想要購買的物品,並將其插入到購物車數據庫表中,然后在單擊“購物車”圖標以顯示其內容時,通過網格視圖顯示此表。

現在,當用戶單擊該項目時,將進行檢查以確保該項目尚未在購物籃中。 如果在其中,則將其更新為新的數量;如果不在,則將其插入購物車數據庫,同時還更新標簽以顯示物品的數量。 除了我有一個令人沮喪的錯誤,即單擊該項目時有時按鈕根本不會添加或更新購物車或標簽總數,所有這些工作正常。 這似乎最經常發生在第一個網格項目上。

我已經逐步調試通過,似乎一切正常,正在從gridrow等獲得正確的ID。 我想知道這是否是某種回發問題

在站點主站點onload方法中設置購物車內容的代碼load方法:

     protected void Page_Load(object sender, EventArgs e)
    {

        if (Session["usersName"] != null)
        {
            object a = Session["_id"];
            IDMaster = Convert.ToInt32(a);

            UserWelcome.Text = "Welcome back " + Session["usersName"].ToString();
            cartButton.Visible = true;
            Label1.Visible = true;
            Label2.Visible = true;
            memberLogin.Visible = false;
            LblOr.Visible = false;
            lblPlease.Visible = false;
            memberLogin.Visible = false;
            memberReg.Visible = false;

        }

        else
        {
            cartButton.Visible = false;
            Label1.Visible = false;
            Label2.Visible = false;
            UserWelcome.Visible = false;
            memberLogin.Visible = true;
            memberLogout.Visible = false;
            LblOr.Visible = true;
            lblPlease.Visible = true;
            memberLogin.Visible = true;
            memberReg.Visible = true;

            MenuItem foo = NavigationMenu.FindItem("My Orders"); // your particular item
            NavigationMenu.Items.Remove(foo);

        }

        setCart();

    }

    private void setCart()
    {

        int cartItems;
        string cartNos;

        SqlConnection sqlcon = new SqlConnection(connString);
        SqlCommand sqlcmd = new SqlCommand("SELECT * FROM contents WHERE memberID = " + IDMaster + "", sqlcon);
        SqlDataAdapter adp = new SqlDataAdapter(sqlcmd);
        DataSet ds = new DataSet();
        adp.Fill(ds);


        if (ds.Tables[0].Rows.Count > 0)
        {
            cartItems = ds.Tables[0].Rows.Count;
            cartNos = cartItems.ToString();
            Label1.Text = cartNos;
        }


        else
        {

            int noItems = 0;
            string convertEmptyItems;

            convertEmptyItems = noItems.ToString();
            Label1.Text = convertEmptyItems;
        }

    }

用於根據商品是否存在來添加或更新購物車的代碼:

        GridViewRow row = ((Button)sender).Parent.Parent as GridViewRow;
        TextBox t = (TextBox)row.FindControl("txtQuan");

        object ID = GridView1.DataKeys[row.RowIndex].Value;

        rowID = Convert.ToInt32(ID);

        ViewState["ID"] = rowID;

        string qty = t.Text;

        int stockToAdd = Convert.ToInt32(qty);

        DBHandler add = new DBHandler(rowID);

        int qtyCheck = add.getStockQty();

        if (stockToAdd > qtyCheck)
        {

            Button2_ModalPopupExtender.Show();

        }

        else{


            SqlConnection con;
            con = add.openDB();

            con.Open();

            DBHandler idCheck = new DBHandler(rowID);
            int rows = idCheck.checkCartRows();

            if (rows > 0)
            {
               int qtyNow = idCheck.getCartQty();

                int updateStock = qtyNow + stockToAdd;

                idCheck.updateQty(rowID, updateStock);
                updatePanel();

            }

            else
            {

                idCheck.insertCart(IDMaster, qty);
                updatePanel();

            }
            add.close();

            DBHandler updateCart = new DBHandler(IDMaster);

            int newRows = updateCart.checkCartRowsAfterUpdate();

            string numberOfRows = newRows.ToString();

            ((Label)this.Master.FindControl("Label1")).Text = numberOfRows;

        }


        }

抱歉,這個問題含糊不清,但我確實可以確定! 希望有人會看到我做錯了。

好的,對此進行了排序。 原來是我錯過了。 基本上,當我顯示我的購物車內容時,我正在為所有會員購物車顯示它。 這讓我感到困惑,因為它正在添加項目。 我的“購物車”將僅顯示通過會話變量登錄的特定成員的內容。 當我的購物車檢查是否已添加商品時,它正在查看為所有成員添加的所有商品,因此,當然,如果另一個成員已經在購物車中添加了該商品,則永遠不會添加它,這很簡單將要對其進行更新,並為其他成員添加該標簽,因此該標簽將不會更新。 一旦刪除購物車中的物品,我就可以添加它。 因此,基本上我現在已經修復了代碼,以便每個項目都具有添加它的成員的相應ID,並且可以正常工作。

此處的關鍵規則是檢查代碼的所有進程以查找缺少的愚蠢事物。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM