編集:
onload メソッドを追加:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["usersName"] != null)
{
object a = Session["_id"];
IDMaster = Convert.ToInt32(a);
GridView1.Columns[10].Visible = true;
GridView1.Columns[11].Visible = true;
}
モーダル ポップアップ エクステンダーを使用して、特定の商品の商品金額が一定の金額を超えていることを顧客に警告しています。
このエクステンダーには 2 つのボタンがあり、ユーザーは新しい在庫が到着したときにメールを送信するかどうかを確認できます。
「はい」ボタンのトリガーは完全に機能しますが、行 ID をクラスのコンストラクターに送信して電子メールの詳細を格納すると、変数がグローバルであっても常に 0 に設定されます。
問題をさらに説明するための私のコードは次のとおりです。
カートにアイテムを追加するためのモーダル内のボタン:
protected void LinkButton1_Click(object sender, EventArgs e)
{
GridViewRow row = ((Button)sender).Parent.Parent as GridViewRow;
TextBox t = (TextBox)row.FindControl("txtQuan");
*********Gain the item row ID (this is what needs to be passed*******
object ID = GridView1.DataKeys[row.RowIndex].Value;
*********This ID should be passed but is setting to 0************
rowID = Convert.ToInt32(ID);
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(qty);
updatePanel();
}
add.close();
}
}
次のコードは、onclick ボタンの確認方法を示しています。カートに追加ボタンがクリックされたときに上記のメソッドに保存された ID 'rowID' に注意してください。このrowIDは、rowID値を保持する代わりに0に設定されています。
protected void btnOK_Click(object sender, EventArgs e)
{
***** rowID is setting to 0*******
DBoutOfStockEmail insertNewEmailDetail = new DBoutOfStockEmail(IDMaster, rowID);
DBMembershipHandler getEmail = new DBMembershipHandler(IDMaster);
string emailToSend = getEmail.emailOfMember();
insertNewEmailDetail.insertDetails(emailToSend);
}
この質問を要約するには: モーダル ポップアップ エクステンダで [はい] ボタンをクリックすると、rowID 変数が「0」に設定されるのはなぜですか?