6

我经常使用 GridViews,有时我对在哪里放置某些代码感到困惑。触发事件(包括所有页面事件)的顺序是什么?

编辑: 我真的也想了解页面和 Gridview 之间发生了什么。事件是否交叉?还是所有页面事件同时发生然后所有 Gridview 事件发生?不只是 GridViews,任何控件 - 但主要是页面和 GridView 交互。

4

4 回答 4

7

如果您指的是页面生命周期,您可以在此处找到概述。

生命周期总结如下:

页面请求

页面请求发生在页面生命周期开始之前。当用户请求页面时,ASP.NET 确定是否需要解析和编译页面(因此开始页面的生命周期),或者是否可以在不运行页面的情况下发送页面的缓存版本作为响应。

开始

在开始步骤中,设置请求和响应等页面属性。在这个阶段,页面还会判断请求是回发还是新请求,并设置 IsPostBack 属性。此外,在开始步骤中,设置了页面的 UICulture 属性。

页面初始化

在页面初始化期间,页面上的控件可用并且每个控件的 UniqueID 属性都被设置。任何主题也适用于页面。如果当前请求是回发,则回发数据尚未加载,控件属性值尚未恢复为视图状态的值。

加载

在加载期间,如果当前请求是回发,则控件属性会加载从视图状态和控件状态恢复的信息。

验证

在验证期间,将调用所有验证器控件的 Validate 方法,该方法设置各个验证器控件和页面的 IsValid 属性。

回发事件处理

如果请求是回发,则调用任何事件处理程序。

渲染

在渲染之前,会保存页面和所有控件的视图状态。在呈现阶段,页面为每个控件调用 Render 方法,提供一个文本编写器,将其输出写入页面的 Response 属性的 OutputStream。

卸下

在页面完全呈现、发送到客户端并准备好被丢弃后调用卸载。此时,页面属性(如 Response 和 Request)被卸载并执行任何清理。

至于 GridView 事件,可以在这里找到。

于 2009-06-05T19:14:39.953 回答
3
protected void GridView1_Load(object sender, EventArgs e)
{
   System.Diagnostics.Debug.WriteLine("GridView1_Load");
}
protected void GridView1_DataBinding(object sender, EventArgs e)
{
   System.Diagnostics.Debug.WriteLine("GridView1_DataBinding");
}
protected void GridView1_DataBound(object sender, EventArgs e)
{
   System.Diagnostics.Debug.WriteLine("GridView1_DataBound");
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
   System.Diagnostics.Debug.WriteLine("GridView1_RowDataBound");
}
于 2009-06-05T19:12:38.850 回答
2

http://msdn.microsoft.com/en-us/library/ms993231.aspx

Gridview 控件事件

于 2009-06-05T19:12:56.480 回答
0

ASP.NET 2.0 事件顺序中有一个更长的列表(注意这是针对 2.0 的)。

于 2010-12-11T16:21:34.867 回答