我经常使用GridViews,有时候我会对放置某些代码的位置感到困惑。触发事件的顺序是什么,包括所有页面事件?
编辑: 我真的也想了解页面和Gridview之间发生了什么。这些事件是否曾经交叉过?或者所有页面事件一次发生,然后发生所有Gridview事件?而不只是GridViews,任何控件 - 但主要是页面和GridView交互。
答案 0 :(得分:7)
如果您正在引用页面生命周期,则可以找到概述here。
生命周期摘要是:
页面请求
页面请求在页面生命周期开始之前发生。当用户请求页面时,ASP.NET确定是否需要解析和编译页面(因此开始页面的生命周期),或者是否可以在不运行页面的情况下响应发送页面的缓存版本。
开始强>
在开始步骤中,设置页面属性,例如请求和响应。在此阶段,页面还确定请求是回发还是新请求,并设置IsPostBack属性。此外,在开始步骤期间,将设置页面的UICulture属性。
页面初始化
在页面初始化期间,页面上的控件可用,并且每个控件的UniqueID属性都已设置。任何主题也适用于页面。如果当前请求是回发,则尚未加载回发数据,并且控制属性值尚未恢复为视图状态中的值。
<强>加载强>
在加载期间,如果当前请求是回发,则控制属性将加载从视图状态和控制状态恢复的信息。
<强>验证强>
在验证期间,将调用所有验证器控件的Validate方法,该方法设置各个验证器控件和页面的IsValid属性。
回发事件处理
如果请求是回发,则调用任何事件处理程序。
<强>渲染强>
在渲染之前,会为页面和所有控件保存视图状态。在呈现阶段,页面为每个控件调用Render方法,提供一个文本编写器,将其输出写入页面Response属性的OutputStream。
<强>卸载强>
在页面完全呈现,发送到客户端并准备好被丢弃之后调用Unload。此时,将卸载响应和请求等页面属性,并执行任何清理。
对于GridView事件,可以找到它们here。
答案 1 :(得分: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");
}
答案 2 :(得分:2)
答案 3 :(得分:0)
ASP.NET 2.0 Event Order有一个更长的列表(注意这是2.0)。