2012年3月7日 星期三

Web Form 的事件簡介

Web Form 事件順序

下圖為 Page Event 的執行的先後順序

若你要在程式碼中建立控制項,你必須了解 LoadViewState 這件事情發生的順序,以免發生資料載入錯誤的情況。

  • LoadViewState 的動作是介於 Page_Init 事件之後及 Page_Load 事件之前,所以在 LoadViewState 之前就要把控制項建立完成,才有辨法由 ViewState 中載入最新的屬性值。
  • 因此,應該要在 Page_Init 事件中把控制項建立完成,若你在這個階段讀取控制項的屬性值都會是初始值,也就是設計階段時,在屬性視窗中設定的值。
  • PageLoad 事件是在 LoadViewState 動作之後才觸發,所以在 PageLoad 事件中讀到的控制項屬性值才會是最新的值。
<h4>實例說明:

下面這三張圖,分別是初始載入畫面,以及並按了2次 Button 按鈕後的顯示頁面。

  • 圖一:程式初始載入。
    各個階段讀到的 TextBox1 值都是 A 。
  • 圖二:將 TextBox1 改成 B ,並按下 Button 。
    TextBox1 的內容,被記錄在 ViewStatus 中,postback 回去後,ViewState 的值會在 Page_Load 之前載入完畢,所以在 Page_Load 階段讀到 TextBox1 的值才會是 B。
  • 圖三:再按下 Button 。
    上次沒有變更 TextBox1 內容,所以少了 TextBox1_TextChange 事件。 不過,這個 B 值還是記錄在 ViewState 中的

沒有留言:

張貼留言