page lifecycle - Is there an after Page_Load event in ASP.net -
is there event triggered after all page_load
events have completed?
how can have more 1
page_load
?
when have user controls.
before page can render, need page (and embedded controls) have initialized completing page_load
events.
the problem, of course, if put code in page's page_load
handler:
mypage.aspx --> page_load ---> dosomethingwithusercontrol() usercontrol1.ascx --> page_load ---> initialize ourselves viewstate has been restored
then begin access usercontrol1
control before ready.
i need way run code after page_load
events have fired, before postback events (e.g. click events) have fired:
mypage.aspx --> page_load usercontrol1.ascx --> page_load ---> initialize ourselves viewstate has been restored mypage.aspx --> page_afterload ---> dosomethingwithusercontrol()
looking @ page lifecycle in msdn looks there no way raise event after page_loads have been completed:
is there way raise after after page_loads have completed?
page_loadcomplete
event raised after controls have been loaded
remember init
event first triggered child controls, , when controls have been initialized, init
event of page raised. load
event works other way around, page first raises load
event , each child control raises own load
event. @ end loadcomplete
raised. note true when controls created @ design time, when controls created dynamically (sadly) not follow approach strictly.
from msdn:
if controls created dynamically @ run time or declaratively within templates of data-bound controls, events not synchronized of other controls on page. example, for control added @ run time, init , load events might occur later in page life cycle same events controls created declaratively. therefore, time instantiated, dynamically added controls , controls in templates raise events 1 after other until have caught event during added controls collection.
take look:
(source: http://msdn.microsoft.com/en-us/library/ms178472.aspx)
edit 1
in order fulfill requirements:
i need way run code after page_load events have fired, before postback events (e.g. click events) have fired:
i think easiest way declare custom event in user control , fire after control has been loaded, jus subscribe event in aspx
user control
public event action loadcompleted = delegate { }; protected void page_load(object sender, eventargs e) { this.loadcompleted(); }
aspx page
protected void page_load(object sender, eventargs e) { this.myusercontrol.loadcompleted += () => { // somethign interesting this.lblmessage.text = datetime.now.tostring(); }; }
Comments
Post a Comment