现在我在page_load中循环生成了若干个自定义的控件,每个控件中都有一个按钮。生成语句如下:
for int i = 0 to 4 
{
UserControl userCon = (UserControl)this.LoadControl("MyUserCon.ascx");
MyUserCon userConDetail = userCon as MyUserCon ;
Panel1.Controls.Add(userConDetail);
userConDetail.CancelButtonEvent += new EventHandler(this.CancelButton_Click);
}
但是只能响应到最后一个用户控件的click事件。其他的按钮按下,就只是运行了一次page_load方法就结束了。也就是只有最后一个按钮按了才能进入CancelButton_Click方法内。请问如何才能使得每个按钮都能进入CancelButton_Click方法?
谢谢

解决方案 »

  1.   

    try to give your user controls different ID'sMyUserCon.ascx:
    <asp:Button id="btn" runat="server" Text="Click Me" />TestUserCon.aspx:<form runat="server">
     <asp:Panel id="Panel1" runat="server" />
    </form><script language="C#" runat="server">
    void Page_Load(Object sender, EventArgs e)
    {
    for(int i = 0; i <4; i++)  
    {
    UserControl userCon = (UserControl)this.LoadControl("MyUserCon.ascx");
    userCon.ID = "abc" + i.ToString();
    Panel1.Controls.Add(userCon);
    //MyUserCon userConDetail = userCon as MyUserCon ;
    //Panel1.Controls.Add(userConDetail);
    //userConDetail.CancelButtonEvent += new EventHandler(this.CancelButton_Click);
    ((Button)userCon.FindControl("btn")).Click += new EventHandler(this.CancelButton_Click);

    }
    }void CancelButton_Click(Object sender, EventArgs e)
    {
      Button btn = (Button)sender;
      Response.Write(btn.Parent.ID + ":" + btn.ID + " is clicked");
    }
    </script>