471,321 Members | 1,624 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 471,321 software developers and data experts.

Page_Load not firing for SIMPLE Dynamic User Controls

I am having a problem where the page load event is not being fired
for certain user controls that I load dynamically in placeholders.
Here is what I'm doing in brief, with full test code supplied at the
bottom.

In my controlling .aspx page, in the page_init() sub, if not postback,
I load two user controls and place them in placeholders. This works
and a trace statement in each user control's page load handler is
executed on initial page load. Then, using a basic button in the
..aspx, I post back the page. At this point, page_load runs only in one
of the user controls. The weird thing here is that these usercontrols
are identical except that one has a datagrid control in it and the
other has a label control in it. If I remove the datagrid control from
the control where page_load always runs, it stops working; conversely,
if I add it to the other user control, page_load now runs on every
postback.

I am storing each usercontrol in session and retrieving and reinserting
it on postback (not by my design), but I would think that if this was
the problem, page_load wouldn't fire on postback for either
usercontrol. Also, autoeventwireup is set to false for all components.

Can any of you gurus help me out here?

Thanks,
Jelling

Full Code, minus the html I couldn't paste in.

PageLoadTest.aspx.vb

Public Class PageLoadTest

Inherits System.Web.UI.Page

#Region " Web Form Designer Generated Code "

'This call is required by the Web Form Designer.

<System.Diagnostics.DebuggerStepThrough()> Private Sub
InitializeComponent()

End Sub

'NOTE: The following placeholder declaration is required by the Web
Form Designer.

'Do not delete or move it.

Private designerPlaceholderDeclaration As System.Object

Protected WithEvents Button1 As System.Web.UI.WebControls.Button

Protected WithEvents ph1 As System.Web.UI.WebControls.PlaceHolder

Protected WithEvents ph2 As System.Web.UI.WebControls.PlaceHolder

Protected WithEvents crpersontype1 As CRPersonType

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Init

'CODEGEN: This method call is required by the Web Form Designer

'Do not modify it using the code editor.

InitializeComponent()

Dim ctrl, ctrl2 As UserControl

If Not Page.IsPostBack Then

ctrl = New UserControl

ctrl = Page.LoadControl("~/clientcenter/user/test.ascx")

ctrl.ID = "crTest1"

Session("PageLoadTest_ctrl") = ctrl

ctrl2 = New UserControl

ctrl2 = Page.LoadControl("~/ClientCenter/User/test2.ascx")

ctrl2.ID = "crTest2"

Session("PageLoadTest_ctrl2") = ctrl2

ph1.Controls.Clear()

ph1.Controls.Add(ctrl)

ph2.Controls.Clear()

ph2.Controls.Add(ctrl2)

Else

ctrl = CType(Session("PageLoadTest_ctrl"), test)

ctrl2 = CType(Session("PageLoadTest_ctrl2"), test2)

ph1.Controls.Clear()

ph1.Controls.Add(ctrl)

ph2.Controls.Clear()

ph2.Controls.Add(ctrl2)

End If

End Sub

#End Region

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load

'Put user code to initialize the page here
End Sub
End Class


Test.ascx.vb:
Public Class test

Inherits System.Web.UI.UserControl

#Region " Web Form Designer Generated Code "

'This call is required by the Web Form Designer.

<System.Diagnostics.DebuggerStepThrough()> Private Sub
InitializeComponent()

End Sub

Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid

'NOTE: The following placeholder declaration is required by the Web
Form Designer.

'Do not delete or move it.

Private designerPlaceholderDeclaration As System.Object

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Init

'CODEGEN: This method call is required by the Web Form Designer

'Do not modify it using the code editor.

InitializeComponent()

End Sub

#End Region

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load

'Put user code to initialize the page here

Trace.Write("test.ascx pageload()")

End Sub

End Class
Test2.ascx.vb:

Public Class test2

Inherits BaseClientCenterUserControl

#Region " Web Form Designer Generated Code "

'This call is required by the Web Form Designer.

<System.Diagnostics.DebuggerStepThrough()> Private Sub
InitializeComponent()

End Sub

Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox

'NOTE: The following placeholder declaration is required by the Web
Form Designer.

'Do not delete or move it.

Private designerPlaceholderDeclaration As System.Object

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Init

'CODEGEN: This method call is required by the Web Form Designer

'Do not modify it using the code editor.

InitializeComponent()

End Sub

#End Region

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load

'Put user code to initialize the page here

Trace.Write("test2.ascx pageload()")

End Sub

End Class

Nov 19 '05 #1
0 2060

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

5 posts views Thread by Brad | last post: by
14 posts views Thread by V. Jenks | last post: by
2 posts views Thread by mollyf | last post: by
1 post views Thread by Ahmet Gunes | last post: by

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.