[英]Button click event not firing after postback
我在Web表单的按钮单击事件中定义了以下代码。 第一次单击按钮时,代码将正确执行。 额外的点击应该为我的数据库添加更多值,但是在这种情况下,第一次回发后,click事件不会触发。
当我离开页面并返回时,我可以在列表中再添加一个名称,但是随后的点击仍然不起作用。 我为此感到困惑...没有在页面上抛出任何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();
}
}
如果正在动态创建有问题的Button,请确保您在每个回发上都重新附加了Click事件处理程序。 听起来可能是问题所在。
最好的方法是在Page的PreInit事件中创建Button控件,然后在其中附加事件处理程序。 这样,它便成为ViewState的一部分,而Page生命周期中的后续事件将对此有所了解。
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);
}
通过将CausesValidation =“ False”添加到此特定按钮来解决该问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.