2009-06-05 130 views
6

我經常使用GridViews,有時我會對某些代碼放在哪裏感到困惑。事件發生的順序是什麼,包括所有頁面事件?在asp.net Gridview控件中觸發事件的順序是什麼?

編輯: 我真的也想了解頁面和Gridview之間會發生什麼。這些事件是否會交叉?或者所有頁面事件一次發生,那麼所有的Gridview事件都會發生?不僅僅是GridView,任何控件 - 但主要是頁面和GridView交互。

+0

真的,嘗試爲每個事件添加一個System.Diagnostics.Debug.Writeline,就像在我的答案中一樣。在設計階段向頁面添加一個gridview,但實際上也嘗試在Page_PreRender中添加一個。這真的會讓你對發生的事情有一個很好的看法...... – Ropstah 2009-06-05 19:45:03

回答

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"); 
} 
+0

這對您將遇到的其他課程會派上用場。這樣做是唯一可以確保事件正在發射的方法。微軟 - 可以說它確實 - 但你怎麼知道肯定?大聲笑 – Ropstah 2009-06-05 19:17:13

7

如果你指的頁面生命週期,你可以找到一個概述here

摘要的生命週期是:

頁面請求

頁生命週期開始之前發生的頁面請求。當用戶請求頁面時,ASP.NET會確定是否需要分析和編譯頁面(因此開始頁面的生命週期),或者是否可以在不運行頁面的情況下發送緩存版本的頁面作爲響應。

開始

在啓動步驟中,頁面屬性,如Request和Response設置。在此階段,頁面還會確定請求是回發還是新請求,並設置IsPostBack屬性。另外,在開始步驟中,頁面的UICulture屬性被設置。

頁面初始化

在頁面初始化時,頁面上的控件可用,並且每個控件的UniqueID屬性設置。任何主題也適用於頁面。如果當前請求是回發,則回發數據尚未加載,並且控件屬性值尚未從視圖狀態恢復爲值。

負載

在負荷,如果當前請求是回發,控制性能裝載有從視圖狀態恢復的信息和控制狀態。

驗證

在驗證過程中,所有的驗證控件的驗證方法被調用,它設置單個驗證控件和頁的IsValid屬性。

回發事件處理

如果請求是回發,任何事件處理程序被調用。

渲染

在渲染之前,視圖狀態保存的頁面和所有控件。在渲染階段,頁面爲每個控件調用Render方法,提供一個文本編寫器,將其輸出寫入頁面的Response屬性的OutputStream。

卸載

後的頁面已經被完全呈現卸載被調用時,發送到客戶端,並準備將其丟棄。此時,響應和請求等頁面屬性被卸載並執行任何清理。

至於GridView事件,他們可以找到here

相關問題