Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 奇怪的ASP.net标签和回发问题_C#_Asp.net_Postback - Fatal编程技术网

C# 奇怪的ASP.net标签和回发问题

C# 奇怪的ASP.net标签和回发问题,c#,asp.net,postback,C#,Asp.net,Postback,我将尽可能准确地描述这个错误,就我目前所见,它似乎是随机的 为了提供一些背景信息,我正在制作一个在线商店,用户单击“添加”按钮,从我的gridview的模板字段向他们的购物车添加商品。这将获取他们想要购买的物品并将其插入购物车数据库表中,然后单击“购物车”图标以显示内容时,该表将通过gridview显示 现在,当用户单击该项目时,将运行检查以确保该项目不在篮子中。如果它在那里,它会将其更新为新的数量,如果不是,它会将其插入购物车数据库,同时也会更新标签以显示物品的数量这一切都很好,除了我有一个令

我将尽可能准确地描述这个错误,就我目前所见,它似乎是随机的

为了提供一些背景信息,我正在制作一个在线商店,用户单击“添加”按钮,从我的gridview的模板字段向他们的购物车添加商品。这将获取他们想要购买的物品并将其插入购物车数据库表中,然后单击“购物车”图标以显示内容时,该表将通过gridview显示

现在,当用户单击该项目时,将运行检查以确保该项目不在篮子中。如果它在那里,它会将其更新为新的数量,如果不是,它会将其插入购物车数据库,同时也会更新标签以显示物品的数量这一切都很好,除了我有一个令人沮丧的错误,那就是当点击物品时,有时按钮根本无法添加或更新购物车或标签总数。这似乎最常发生在第一个网格物品上

我已经通过了调试器,它似乎都在工作,正在从网格中获取正确的ID等。我想知道这是否是某种回发问题

在站点主控加载方法中设置购物车内容的代码、加载方法:

     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,并且工作正常


这里的关键规则是检查代码的所有进程是否缺少愚蠢的东西。

您是否在页面中使用验证,如必填字段等。我猜您遇到了生命周期问题。首先加载页面,然后加载母版页,然后通过按钮单击运行添加功能。因此,您的内容在实际添加之前就已加载。@Rahul此页上没有验证。@Yeronimo是的,我可以看到您在那里说的话。我不明白的是,有时它是好的,而另一些则不是!唯一设置的模式是当问题确实出现时,它似乎总是发生在网格中的第一个项目上。如果我点击任何其他物品,第一件物品就可以了。但是你的购物车不是总是落后一件物品吗?