K
Karl Seguin
i have a dynamically created user control which contains a non-dynamically
created ASP.Net button. When the button is clicked, the event is not fired.
I know that the control must be created on postback, and it is. However,
I've noticed an intriguing thing which I think might be at the root of the
problem.
My page inherits from a basepage, which in turn inherits from
System.Web.UI.Page. On initial load, the events fire something like this:
page.load (aspx page)
control.load (dynamically loaded ascx control)
base.CreateChildControls (base page)
base.Render (base page)
however, on postback, the sequence of events changes to:
base.CreateChildControls
page.load
control.load
base.Render
I imagine that this unexpected change of sequence, in addition to what I'm
probably doing in CreateChildControls is the cause of my problem. I'm
guessing this because if I make my page inherit directly from
System.Web.UI.Page, the problem is solved (also, if I don't make the control
dynamic, the problem is solved).
Here's my CreateChildControls in the base page, as I suspect I might be
doing something wrong in it:
Protected Overrides Sub CreateChildControls()
Me.Controls.Add(_plcContent)
Dim mainForm As HtmlForm = CType(Page.FindControl("frmMain"), HtmlForm)
If Not mainForm Is Nothing Then
Dim Header As Control =
CType(Page.LoadControl("~/Presentation/Header.ascx"), Control)
Dim Footer As Control =
CType(Page.LoadControl("~/Presentation/Footer.ascx"), Control)
mainForm.Controls.AddAt(0, Header)
mainForm.Controls.Add(Footer)
_plcContent.Controls.Add(mainForm)
End If
MyBase.CreateChildControls()
End Sub
_plcContent is a new PlaceHolder defined in the base page.
Karl
created ASP.Net button. When the button is clicked, the event is not fired.
I know that the control must be created on postback, and it is. However,
I've noticed an intriguing thing which I think might be at the root of the
problem.
My page inherits from a basepage, which in turn inherits from
System.Web.UI.Page. On initial load, the events fire something like this:
page.load (aspx page)
control.load (dynamically loaded ascx control)
base.CreateChildControls (base page)
base.Render (base page)
however, on postback, the sequence of events changes to:
base.CreateChildControls
page.load
control.load
base.Render
I imagine that this unexpected change of sequence, in addition to what I'm
probably doing in CreateChildControls is the cause of my problem. I'm
guessing this because if I make my page inherit directly from
System.Web.UI.Page, the problem is solved (also, if I don't make the control
dynamic, the problem is solved).
Here's my CreateChildControls in the base page, as I suspect I might be
doing something wrong in it:
Protected Overrides Sub CreateChildControls()
Me.Controls.Add(_plcContent)
Dim mainForm As HtmlForm = CType(Page.FindControl("frmMain"), HtmlForm)
If Not mainForm Is Nothing Then
Dim Header As Control =
CType(Page.LoadControl("~/Presentation/Header.ascx"), Control)
Dim Footer As Control =
CType(Page.LoadControl("~/Presentation/Footer.ascx"), Control)
mainForm.Controls.AddAt(0, Header)
mainForm.Controls.Add(Footer)
_plcContent.Controls.Add(mainForm)
End If
MyBase.CreateChildControls()
End Sub
_plcContent is a new PlaceHolder defined in the base page.
Karl