我有一個產品下拉列表,一個顯示有序產品的網格視圖和一個按鈕,用於將所選產品從下拉列表添加到網格視圖。服務器端事件非常火災
當有人點擊添加新產品按鈕時,我的服務器端點擊處理程序只會觸發一些時間,並且不會觸發其他時間。可能是什麼問題呢?
private void AddNewProductToGridView()
{
if (lstProducts.SelectedIndex < 0) return;
Response.Write("Selected Index: " + lstProducts.SelectedValue +
"<br />Selected Text: " + lstProducts.SelectedItem.Text +
"<br />Selected Value: " + lstProducts.SelectedValue);
}
protected void btnAddProduct_Click(object sender, EventArgs e)
{
AddNewProductToGridView();
}
更新 好後,馬上我張貼的問題,該按鈕的服務器端Click事件每次啓動時間一般射擊。 :D
但是,還有另一個問題。我也有一個數量的文本框。我希望該按鈕作爲頁面的默認按鈕,即當用戶輸入數量並按下回車鍵時,必須調用相同的服務器端方法AddNewProductToGridView
。
所以,我的文本框的AutoPostBack
屬性設置爲True
並添加文本框的,像這樣的文本改變事件的事件處理程序:
protected void txtQuantity_TextChanged(object sender, EventArgs e)
{
AddNewProductToGridView();
}
關於這個我肯定這個事件處理程序除了我第一次啓動應用程序以外,不會發生火災。
更高版本的更新
我想我找到了解決我的問題,並學到新的東西。
顧名思義,TextBox服務器端控件的Text_Changed事件如果TextBox的Text屬性自上次回發後沒有更改,則不會觸發。因此作爲觸發回傳的手段是不可靠的。
發佈關於按鈕的aspx。 –
我可以肯定地告訴你,'TextChanged'事件非常可靠地觸發。你如何處理事件處理程序?你一定錯過了那裏的東西。 – nunespascal
你說的很對,只有文本發生變化時纔會觸發'TextChanged'。值得注意的是,無論是否有回傳(例如發生回傳,Asp.Net將當前值與先前值進行比較並決定是否應提高事件)。 – Basic