gpt4 book ai didi

c# - 回发后按钮单击事件未触发

转载 作者:太空宇宙 更新时间:2023-11-03 18:35:40 24 4
gpt4 key购买 nike

我在网络表单的按钮点击事件中定义了以下代码。第一次单击按钮时代码正确执行。额外的点击应该会向我的数据库添加更多值,但在这种情况下,在第一次回发后,不会触发点击事件。

当我离开页面再回来时,我可以在列表中再添加一个名字,但随后的点击仍然不起作用。我被这个难住了......没有在页面上抛出任何 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 事件处理程序。听起来这可能是问题所在。

最好的方法是在页面的 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);
}

关于c# - 回发后按钮单击事件未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15975394/

24 4 0