Page 执行中将按照如下顺序激活事件
Page.PreInit
Page.Init
Page.InitComplite
Page.PreLoad
Page.Load
Page.LoadComplete
Page.PreRender
Page.PreRenderComplete
上面的这些代码,一般会用到这两个事件,一个是Page.Load,这个事件通用用来绑定数据到控件中。另外一个是Page.PreRenderComplete,当刚才的那个事件成功之后,就到这个控件了,将自己的代码放在Page.PreRenderComplete事件中,就可以对Page.Load绑定的数据进行操作了,否则,不讲究顺序和规则的话,有的时候压根就无法获取所需要的数据。比如,下面给大家一个代码示例:
protected void Page_PreRenderComplete(object sender, EventArgs e) //页面控件数据绑定完成后的事件
{
if (Session["SubjectName"].ToString().Trim() != "") //
{
for (int i = 0; i < DropDownList1.Items.Count; i++)
{
if (DropDownList1.Items[i].Text.ToString().Trim() == Session["SubjectName"].ToString().Trim())
{
DropDownList1.SelectedValue = Session["SubjectName"].ToString().Trim();
DropDownList1.Enabled = false;
}
}
}
}
如果页面从另一个页面继承,如BasePage:System.Web.UI.Page,在BasePage中做了一些扩展,如权限检查,而其他页面从BasePage继承,则BasePage和最终Page的事件激活顺序是:
UI.PreInit
Page.PreInit
UI.Init
Page.Init
UI.InitComplite
Page.InitComplite
UI.PreLoad
Page.PreLoad
UI.Load
Page.Load
UI.LoadComplete
Page.LoadComplete
UI.PreRender
Page.PreRender
UI.PreRenderComplete
Page.PreRenderComplete
如果使用了MasterPage,则MasterPage中的事件和ContentPage中的事件按照下面顺序激活:
ContentPage.PreInit
Master.Init
ContentPage.Init
ContentPage.InitComplite
ContentPage.PreLoad
ContentPage.Load
Master.Load
ContentPage.LoadComplete
ContentPage.PreRender
Master.PreRender
ContentPage.PreRenderComplete
如果ContentPage继承BasePage,那么,各事件的执行顺序将变成了
UI.PreInit
ContentPage.PreInit
Master.Init
UI.Init
ContentPage.Init
UI.InitComplite
ContentPage.InitComplite
UI.PreLoad
ContentPage.PreLoad
UI.Load
ContentPage.Load
Master.Load
UI.LoadComplete
ContentPage.LoadComplete
UI.PreRender
ContentPage.PreRender
Master.PreRender
UI.PreRenderComplete
ContentPage.PreRenderComplete