2013-04-12 80 views
1

我已經在我的webform上的按鈕單擊事件中定義了以下代碼。第一次點擊按鈕時代碼正確執行。其他點擊應該爲我的數據庫添加更多值,但在這種情況下,在第一次回發之後,點擊事件不會觸發。按鈕單擊事件後不會觸發

當我離開頁面,回來,我可以添加一個名字到列表中,但隨後的點擊,仍然不起作用。我難倒這個......不扔在頁面上的任何Javascript錯誤(這是我想到的第一件事)

if (!String.IsNullOrEmpty(tbSuggestedSupplier_Add.Text)) 
{ 
    SqlCommand cmd = new SqlCommand("pSuggestedSupplier_AddNew", dbConnection); 
    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.Parameters.Clear(); 
    cmd.Parameters.Add("@NewSupplierRequestID", SqlDbType.Int); 
    cmd.Parameters.Add("@SupplierName", SqlDbType.VarChar, (500)); 
    //cmd.Parameters.Add("@SupplierTypeID"); 

    cmd.Parameters["@NewSupplierRequestID"].Value = Session["NewSupplierRequestID"]; 
    cmd.Parameters["@SupplierName"].Value = tbSuggestedSupplier_Add.Text; 
    functions.NewSupplierRequest.Open(); 

    try 
    { 
     cmd.ExecuteNonQuery(); 
     gvSuggestedSuppliers.DataBind(); 
     tbSuggestedSupplier_Add.Text = string.Empty; 
    } 

    catch (Exception err) 
    { 
     this.lblError.Text = err.Message; 
    } 

    finally 
    { 
     functions.NewSupplierRequest.Close(); 
    } 
} 
+0

你有沒有調試檢查你的程序是否進入「保護無效Your_Handler(對象發件人,EventArgs的)」的一部分呢? –

+2

你能告訴我們按鈕和周圍的html元素嗎? –

回答

3

通過將CausesValidation =「False」添加到此特定按鈕來解決問題。

4

如果有問題的按鈕被動態地創建,確保你是在每次回發時重新附加Click事件處理程序。聽起來這可能是問題所在。

去了解它,最好的辦法是隻建立在你的頁面的PreInit event Button控件,並附加事件處理程序存在。這樣它就是你的ViewState的一部分,後面的頁面生命週期事件會知道它。

Page_PreInit(Object sender, EventArgs e) 
{ 
    Button yourBtn = new Button(); 
    // Set your other properties 
    yourBtn.Click += yourEventHandlerName; 
    // Add the control to the controls collection of whatever container it belongs in 
    yourContainer.Controls.Add(yourBtn); 
} 
相關問題