2013-04-12 87 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); 
} 
相关问题