我經常使用GridViews,有時我會對某些代碼放在哪裏感到困惑。事件發生的順序是什麼,包括所有頁面事件?在asp.net Gridview控件中觸發事件的順序是什麼?
編輯: 我真的也想了解頁面和Gridview之間會發生什麼。這些事件是否會交叉?或者所有頁面事件一次發生,那麼所有的Gridview事件都會發生?不僅僅是GridView,任何控件 - 但主要是頁面和GridView交互。
我經常使用GridViews,有時我會對某些代碼放在哪裏感到困惑。事件發生的順序是什麼,包括所有頁面事件?在asp.net Gridview控件中觸發事件的順序是什麼?
編輯: 我真的也想了解頁面和Gridview之間會發生什麼。這些事件是否會交叉?或者所有頁面事件一次發生,那麼所有的Gridview事件都會發生?不僅僅是GridView,任何控件 - 但主要是頁面和GridView交互。
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");
}
這對您將遇到的其他課程會派上用場。這樣做是唯一可以確保事件正在發射的方法。微軟 - 可以說它確實 - 但你怎麼知道肯定?大聲笑 – Ropstah 2009-06-05 19:17:13
如果你指的頁面生命週期,你可以找到一個概述here。
摘要的生命週期是:
頁面請求
頁生命週期開始之前發生的頁面請求。當用戶請求頁面時,ASP.NET會確定是否需要分析和編譯頁面(因此開始頁面的生命週期),或者是否可以在不運行頁面的情況下發送緩存版本的頁面作爲響應。
開始
在啓動步驟中,頁面屬性,如Request和Response設置。在此階段,頁面還會確定請求是回發還是新請求,並設置IsPostBack屬性。另外,在開始步驟中,頁面的UICulture屬性被設置。
頁面初始化
在頁面初始化時,頁面上的控件可用,並且每個控件的UniqueID屬性設置。任何主題也適用於頁面。如果當前請求是回發,則回發數據尚未加載,並且控件屬性值尚未從視圖狀態恢復爲值。
負載
在負荷,如果當前請求是回發,控制性能裝載有從視圖狀態恢復的信息和控制狀態。
驗證
在驗證過程中,所有的驗證控件的驗證方法被調用,它設置單個驗證控件和頁的IsValid屬性。
回發事件處理
如果請求是回發,任何事件處理程序被調用。
渲染
在渲染之前,視圖狀態保存的頁面和所有控件。在渲染階段,頁面爲每個控件調用Render方法,提供一個文本編寫器,將其輸出寫入頁面的Response屬性的OutputStream。
卸載
後的頁面已經被完全呈現卸載被調用時,發送到客戶端,並準備將其丟棄。此時,響應和請求等頁面屬性被卸載並執行任何清理。
至於GridView事件,他們可以找到here。
在ASP.NET 2.0 Event Order有更長的列表(注意這是2.0)。
真的,嘗試爲每個事件添加一個System.Diagnostics.Debug.Writeline,就像在我的答案中一樣。在設計階段向頁面添加一個gridview,但實際上也嘗試在Page_PreRender中添加一個。這真的會讓你對發生的事情有一個很好的看法...... – Ropstah 2009-06-05 19:45:03