【问题标题】:What is the sequence of events firing off in asp.net Gridview control?在 asp.net Gridview 控件中触发的事件序列是什么?
【发布时间】:2017-09-30 14:52:26
【问题描述】:

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

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

【问题讨论】:

  • 真的,尝试为我的回答中的每个事件添加 System.Diagnostics.Debug.Writeline。在设计时向页面添加一个网格视图,但实际上也尝试在 Page_PreRender 期间添加一个。这真的会让你对正在发生的事情有一个很好的了解......

标签: asp.net events gridview sequence


【解决方案1】:

如果您指的是页面生命周期,您可以找到概览here

生命周期总结为:

页面请求

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

开始

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

页面初始化

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

加载

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

验证

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

回发事件处理

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

渲染

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

卸载

在页面完全呈现、发送到客户端并准备好丢弃后调用 Unload。此时,响应和请求等页面属性已卸载并执行任何清理操作。

GridView的事件可以在here找到。

【讨论】:

    【解决方案2】:
    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");
    }
    

    【讨论】:

    • 这对于您将遇到的其他课程会派上用场。这样做是您可以确定事件正在触发的唯一方法。微软——可以说是——但你怎么知道呢?大声笑
    【解决方案3】:

    【讨论】:

      【解决方案4】:

      ASP.NET 2.0 Event Order 有一个更长的列表(注意这是针对 2.0 的)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-03
        • 2020-05-14
        • 2017-11-11
        相关资源
        最近更新 更多