It is a nice feature in ASP.NET that we can access the properties of controls instead of working with request and respond objects directly. However, the nice feature comes with a price: we need to know the page life cycle to know when we can get and set the state of controls. In ASP.NET 1.x, we usually work with Init, Load, Databinding and PreRender events. It as a small learning curve but once we got over it things were working predictably.
In ASP.NET 2.x, the number of events grew considerably bigger. The following events were added:
PreInit
InitComplete
PreLoad
LoadComplete
SaveStateComplete
PreRenderComplete
I had a pretty good use case fore PreInit. If we need to dynamically change them or master page, we need to do it in PreInit.
I found a good use case for PreRenderComplete today. In ASP.NET 1.x, if I want to modify the result of databinding, I usually do it in databound event of a control or the Page_PreRender event. However, in ASP.NET 2.x, a menu would not bind to a SiteMapDatasource until after the PreRender event; anything I do in PreRender is erased. If I need to append my item to the menu dynamically, I have to do it in PreRenderComplete event.
In anyone knows good use case for other events, please let me know.