我將盡可能準確描述此錯誤,就目前而言,據我所知,它似乎是隨機的。奇怪的ASP.net標籤和回發問題
爲了給出一些背景信息,我正在做一個網上商店,用戶點擊一個'添加'按鈕從我的gridview的模板字段添加項目到他們的購物車。這需要他們想要購買的物品並將其插入到購物車數據庫表中,然後當點擊'cart'icon顯示內容時,通過gridview顯示該表格。
現在,當用戶單擊該項目時,運行檢查以確保該項目不在籃中。如果它在那裏,則將其更新爲新的金額,如果不是,則將其插入到購物車數據庫中,同時更新標籤以顯示物品的數量。 這一切都工作得很好,除了我有一個令人沮喪的錯誤,有時按鈕不會添加或更新購物車或標籤總數,當項目被點擊。這似乎發生在最常見的第一個網格項目上。
我已經通過調試加強,它似乎都可以工作,正在從gridrow等獲得正確的ID 我想知道,如果它是某種形式的回傳問題
的代碼,負荷方法來設置車的內容在網站主的onload方法:
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;
}
}
代碼用於在添加或更新車依賴,如果項目已經excists:
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;
}
}
對這個問題含糊不清,但我真的可以把它放下!希望有人會看到我做錯的事。
你是否使用驗證到你的網頁中,如需要的領域等等等等...... – Rahul 2013-04-23 10:23:49
你遇到生命週期問題是我的猜測。你的頁面的負載將首先發生,然後加載你的masterpage,然後你添加功能從一個按鈕點擊將運行。因此,您的內容在實際添加之前會被加載。 – Yeronimo 2013-04-23 10:28:35
@Rahul此頁面沒有驗證。 – user1352057 2013-04-23 10:28:43