事件名 | 典型使用 |
PreInit | 在启动阶段完成之后、初始化阶段开始之前引发。 使用该事件来执行下列操作:
|
Init | 在所有控件都已初始化且已应用所有外观设置后引发。各个控件的 事件在页的 事件之前发生。 使用该事件来读取或初始化控件属性。 |
在页的初始化阶段结束时引发。 和 事件之间仅发生一个操作:开启对视图状态更改的跟踪。视图状态跟踪使控件可以保留所有以编程方式添加到 集合的值。在开启视图状态跟踪之前,所有添加到视图状态的值都会在回发期间丢失。控件通常在引发其 事件后立即开启视图状态跟踪。 使用此事件对要在下一个回发后务必保留的视图状态进行更改。 | |
在页为自身和所有控件加载视图状态之后以及处理 实例包括的回发数据之后引发。 | |
对象对 对象调用 方法,然后以递归方式对每个子控件执行相同操作,直到加载完本页和所有控件为止。各个控件的 事件在页的 事件之后发生。 使用 事件方法来设置控件中的属性并建立数据库连接。 | |
控件事件 | 使用这些事件来处理特定控件事件,如 控件的 事件或 控件的 事件。 |
在事件处理阶段结束时引发。 对需要加载页上的所有其他控件的任务使用该事件。 | |
在 对象创建呈现页所需的所有控件(包括组合控件的子控件)之后引发。(为此, 对象会针对每个控件和页调用 。) 对象在 对象上调用 事件,然后以递归方式对每个子控件执行相同操作。各个控件的 事件在页的 事件之后发生。 在呈现阶段开始之前,使用该事件对页或其控件的内容进行最后更改。 使用该事件在服务器控件呈现给页之前执行任何更新。在该事件的生存期内可以保存服务器控件视图状态的任何更改。不保存呈现阶段内所做的同样更改。 | |
在设置了 属性的每个数据绑定控件调用其 方法之后引发。有关更多信息,请参见本主题后面的。 | |
在为页和所有控件保存视图状态和控件状态之后发生。此时对页或控件进行的任何更改都会影响呈现,但是在下一个回发中将不会检索到这些更改 | |
这不是事件;在处理的这个阶段, 对象会在每个控件上调用此方法。所有 ASP.NET Web 服务器控件都有一个用于写出发送给浏览器的控件标记的 方法。 如果创建自定义控件,通常要覆盖此方法以输出控件的标记。不过,如果自定义控件只合并标准的 ASP.NET Web 服务器控件,不合并自定义标记,则不需要覆盖 方法。有关更多信息,请参见。 用户控件(.ascx 文件)自动合并呈现,因此不需要在代码中显式呈现该控件。 | |
首先针对每个控件引发,继而针对该页引发。 在控件中,使用该事件对特定控件执行最后清理,如关闭控件特定数据库连接。 对于页自身,使用该事件来执行最后清理工作,如:关闭打开的文件和数据库连接,或完成日志记录或其他请求特定任务。 注意 在卸载阶段,页及其控件已被呈现,因此无法对响应流做进一步更改。如果尝试调用方法(如 Response.Write 方法),则该页将引发异常。 |
代码:
protected void Page_PreInit(object sender, EventArgs e) { Response.Write("Page_PreInit" + ""); } protected void Page_Init(object sender, EventArgs e) { Response.Write("Page_Init" + ""); } protected void Page_Load(object sender, EventArgs e) { Response.Write("Page_Load" + ""); } protected void Page_PreRender(object sender, EventArgs e) { Response.Write("Page_PreRender" + ""); } protected void Page_InitComplete(object sender, EventArgs e) { Response.Write("Page_InitComplete" + ""); } protected void Page_PreLoad(object sender, EventArgs e) { Response.Write("Page_PreLoad" + ""); } protected void Page_LoadComplete(object sender, EventArgs e) { Response.Write("Page_LoadComplete" + ""); } protected void Page_PreRenderComplete(object sender, EventArgs e) { Response.Write("Page_PreRenderComplete" + ""); } protected void Page_SaveStateComplete(object sender, EventArgs e) { Response.Write("Page_SaveStateComplete" + ""); } protected void Page_Unload(object sender, EventArgs e) { // Response.Write("Page_Unload" + ""); 使用response.write 将引发异常 } protected void Button1_Click(object sender, EventArgs e) { } protected void Button1_Init(object sender, EventArgs e) { Response.Write("服务器控件_Init" + ""); } protected void Button1_Load(object sender, EventArgs e) { Response.Write("服务器控件_Load" + ""); } protected void Button1_PreRender(object sender, EventArgs e) { Response.Write("服务器控件_PreRender" + ""); } protected void Button1_Unload(object sender, EventArgs e) { }
效果:
测试gridview绑定数据需要的时间
前台代码
后台代码:
protected void Page_PreInit(object sender, EventArgs e) { Response.Write("Page_PreInit" +"--time:"+ DateTime.Now.ToString("yyyy-MM-dd-hh-mm----ssfff") + ""); } protected void Page_Init(object sender, EventArgs e) { Response.Write("Page_Init" + "--time:" + DateTime.Now.ToString("yyyy-MM-dd-hh-mm----ssfff") + ""); } protected void Page_Load(object sender, EventArgs e) { Response.Write("Page_Load" + "--time:" + DateTime.Now.ToString("yyyy-MM-dd-hh-mm----ssfff") + ""); SqlDataAdapter da = new SqlDataAdapter("select * from Table_1", ConfigurationManager.ConnectionStrings["testConnectionString1"].ToString()); DataSet ds = new DataSet(); da.Fill(ds); GridView1.DataSource = ds; GridView1.DataBind(); } protected void Page_PreRender(object sender, EventArgs e) { Response.Write("Page_PreRender" + "--time:" + DateTime.Now.ToString("yyyy-MM-dd-hh-mm----ssfff") + ""); } protected void Page_InitComplete(object sender, EventArgs e) { Response.Write("Page_InitComplete" + "--time:" + DateTime.Now.ToString("yyyy-MM-dd-hh-mm----ssfff") + ""); } protected void Page_PreLoad(object sender, EventArgs e) { Response.Write("Page_PreLoad" + "--time:" + DateTime.Now.ToString("yyyy-MM-dd-hh-mm----ssfff") + ""); } protected void Page_LoadComplete(object sender, EventArgs e) { Response.Write("Page_LoadComplete" + "--time:" + DateTime.Now.ToString("yyyy-MM-dd-hh-mm----ssfff") + ""); } protected void Page_PreRenderComplete(object sender, EventArgs e) { Response.Write("Page_PreRenderComplete" + "--time:" + DateTime.Now.ToString("yyyy-MM-dd-hh-mm----ssfff") + ""); } protected void Page_SaveStateComplete(object sender, EventArgs e) { Response.Write("Page_SaveStateComplete" + "--time:" + DateTime.Now.ToString("yyyy-MM-dd-hh-mm----ssfff") + ""); } protected void Page_Unload(object sender, EventArgs e) { // Response.Write("Page_Unload" + ""); 使用response.write 将引发异常 } protected void Button1_Click(object sender, EventArgs e) { } protected void Button1_Init(object sender, EventArgs e) { Response.Write("服务器控件_Init" + "--time:" + DateTime.Now.ToString("yyyy-MM-dd-hh-mm----ssfff") + ""); } protected void Button1_Load(object sender, EventArgs e) { Response.Write("服务器控件_Load" + "--time:" + DateTime.Now.ToString("yyyy-MM-dd-hh-mm----ssfff") + ""); } protected void Button1_PreRender(object sender, EventArgs e) { Response.Write("服务器控件_PreRender" + "--time:" + DateTime.Now.ToString("yyyy-MM-dd-hh-mm----ssfff") + ""); } protected void Button1_Unload(object sender, EventArgs e) { } protected void GridView1_Init(object sender, EventArgs e) { Response.Write("grid 初始化开始" + "--time:" + DateTime.Now.ToString("yyyy-MM-dd-hh-mm----ssfff") + ""); } protected void GridView1_DataBinding(object sender, EventArgs e) { Response.Write("grid要绑定数据了" + "--time:" + DateTime.Now.ToString("yyyy-MM-dd-hh-mm----ssfff") + ""); } protected void GridView1_DataBound(object sender, EventArgs e) { Response.Write("grid 数据绑定完毕了!" + "--time:" + DateTime.Now.ToString("yyyy-MM-dd-hh-mm----ssfff") + ""); }
效果: