为什么我的动态添加的事件处理程序方法没有在asp.net页面中触发?

时间:2010-10-23 16:32:56

标签: c# asp.net event-handling dynamic-controls

在我的asp.net页面代码隐藏中,我正在动态创建一个按钮并为其添加一个事件处理程序。但是当我在按钮点击事件(我在代码隐藏中添加)设置断点时,它没有击中。知道为什么吗?

我的代码在这里

ASP.NET PAGE

<form runat="Server" id="frm1">
   <div id="divPaymentOptions" runat="Server"> </div>
</form>  

CODEBEHIND(C#)

 protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
          LoadControl();
        }
    }
 private void LoadControl()
 {
     Button objTempBtn = new Button();
     objTempBtn.ID = "myDynamicBtn";
     objTempBtn.Text = "Clich me";
     objTempBtn.Click+=new EventHandler(objTempBtn_Click);
     this.divPaymentOptions.Controls.Add(objTempBtn);
 }

 private void objTempBtn_Click(object sender, EventArgs e)
 {
    string strMsg="want to do something here";
 }

我在divPaymentOptions上放了一个断点。但是当我跑的时候没有碰到它。但是当我点击按钮时会发生回发。它涉及PageLoad方法。不知道为什么它没有进入我的按钮点击事件。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

回发期间按钮不存在。如果您动态地向页面添加控件,则必须每次都执行此操作。取出!IsPostBack的支票,它应该有效。