Is there an event that is triggered after all Page_Load
events have completed?
How can i have more than one
Page_Load
?
When you have user controls.
Before my page can render, i need my page (and all embedded controls) to have initialized themselves by completing their Page_Load
events.
The problem, of course, is that if i put code in my page's Page_Load
handler:
MyPage.aspx
--> Page_Load
---> DoSomethingWithUserControl()
UserControl1.ascx
--> Page_Load
---> initialize ourselves now that viewstate has been restored
then i begin to access my UserControl1
control before it is ready.
i need a way to run code after all Page_Load
events have fired, but before any postback events (e.g. Click events) have fired:
MyPage.aspx
--> Page_Load
UserControl1.ascx
--> Page_Load
---> initialize ourselves now that viewstate has been restored
MyPage.aspx
--> Page_AfterLoad
---> DoSomethingWithUserControl()
Looking at the page lifecycle in MSDN it looks like there is no way to raise an event after all Page_Loads have been completed:
Is there a way to raise an after after all Page_Loads have completed?
Best Answer
Page_LoadComplete
is the event that is raised after all controls have been loadedRemember that the
Init
event is first triggered by all child controls, and just when all controls have been initialized, theInit
event of the page is raised. TheLoad
event works the other way around, the page first raises theLoad
event and then each child control raises its ownLoad
event. At the end theLoadComplete
is raised. Note that this is true only when the controls are created at design time, when the controls are created dynamically they (sadly) do not follow this approach strictly.From MSDN:
Take a look:
(source: http://msdn.microsoft.com/en-us/library/ms178472.aspx)
Edit 1
In order to fulfill all your requirements:
I think the easiest way is to declare a custom event in the User Control and fire it after the control has been loaded, then jus subscribe to that event in your ASPX
User Control
ASPX page