GridView的 RowDataBound與 RowCreated事件 #1,RowCreated事件執行時間較早

GridView的 RowDataBound與 RowCreated事件 #1的,RowCreated事件執行時間較早



 

前面兩個小範例,因為我昨天有事要處理,時間不夠,沒解釋完全。

[習題]DataBinding?資料繫結?資料綁定? #6 -- 傷腦筋的 GridView加總、小計

[習題]DataBinding?資料繫結?資料綁定? #7 -- 傷腦筋的 GridView加總、小計(原來如此 / 範例下載)

 

 

 

Q: 為什麼上一個範例,修正後的程式,

寫在 GridView的 RowCreated事件與 RowDataBound事件是有差異的呢?

 

正確運作的結果應該類似(圖一 / RowCreated事件):

      

 

 

錯誤的執行成果(圖二。寫在RowDataBound事件

      

 

 

 

這個問題很有趣,想要知道答案的話,

應該打開您的 Visual Studio,自己寫一些簡單程式,實際試試看就會瞭解。

 

================================================================================

GridView的這兩個事件,在本書 上 集(ASP.NET專題實務、ASP.NET 4.0專題實務)都有很多範例應用。

尤其是第十章、第十一章。相同的範例,網站上也有公開,例如:

大腸包小腸(巢狀GridView、父子GridView)的Master-Detail主表明細

[習題]GridView樣版內部,改用CheckBox/Radio/DropDownList(單/複選 )...等範例

 

所以在此作一個簡單的補充。

 

 

 

MSDN網站的解說是最好的參考資料。

 

GridView各種事件 -- http://msdn.microsoft.com/zh-tw/library/hf8xwy0t.aspx

 

RowDataBound -- 資料列繫結 GridView 控制項中的資料時發生。PostBack以後不會執行(請看以下圖片的紅色字體)

RowCreated -- 建立 GridView 控制項中的資料列時發生。(請看以下圖片的藍色字體)

 

2014/1/15補充http://www.allenkuo.com/EBook5/view.aspx?a=1&TreeNodeID=82&id=1373

Allen Kuo文章裡面提到:
 
    如果程式寫在RowDataBound與 RowCreated事件這兩處都可以, 是不是沒差別呢?
 
    其實還是有差別的, 若網頁第一次載入, Repeater(或GridView)會有 DataBinding 事件, 
    但若按了網頁上的 Button 導致 postback 時, 其實 Repeater (或GridView)並不會觸發 DataBinding 事件, 讓我們來寫程式印證一下,......

 

 

      

 

上圖的執行過程中,我們可以發現 RowCreated 事件比較早被執行

您可以簡單測試看看,

 

HTML畫面裡頭,使用簡單的 GridView搭配 SqlDataSource即可。

後置程式碼如下:

01 Protected Sub GridView1_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowCreated
02 Response.Write("<font color=blue>")
03
04 'IF (e.Row.RowType = DataControlRowType.DataRow) then
05 Response.Write("** RowCreated事件 -- " & e.Row.RowType.ToString())
06 'End IF
07
08 Response.Write("</font><br>")
09 End Sub

10
11
12 Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
13 Response.Write("<font color=red>")
14
15 Response.Write("RowDataBound事件 -- " & e.Row.RowType.ToString())
16
17 Response.Write("</font><br>")
18 End Sub

 

本系列的下一篇相關文章:

[下載]GridView的 RowDataBound與 RowCreated事件 #2,基礎入門練習&範例

 

 

2011/09/07補充:

[Repeater]三個事件的執行先後?ItemDataBound / ItemCreated / ItemCommand

 

 

 

 

我將思想傳授他人, 他人之所得,亦無損於我之所有;

猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson

線上課程,遠距教學 (Web Form 49hr)  https://dotblogs.com.tw/mis2000lab/2016/02/01/aspnet_online_learning_distance_education_VS2015

線上課程,遠距教學 (ASP.NET MVC 75hr)  https://dotblogs.com.tw/mis2000lab/2018/08/14/ASPnet_MVC_Online_Learning_MIS2000Lab

ASP.NET MVC線上課程 第一天 免費看 (5.5小時) 

寫信給我,不要私訊 --  mis2000lab (at) yahoo.com.台灣  或  school (at) mis2000lab.net


ASP.NET遠距教學、線上課程(Web Form + MVC)。 第一天課程, "完整" 試聽。 

................   facebook社團   https://www.facebook.com/mis2000lab   ......................

................  YouTube (ASP.NET) 線上教學影片  https://www.youtube.com/channel/UC6IPPf6tvsNG8zX3u1LddvA/

 

Blog文章 "附的範例" 無法下載,請看 這裡 ...... https://dotblogs.com.tw/mis2000lab/2016/03/14/2008_2015_mis2000lab_sample_download

請看我們的「售後服務」範圍(嚴格認定)

......................................................................................................................................................

...................................................................................................................................................... 

[遠距教學、教學影片] ASP.NET (Web Form) 課程 上線了!MIS2000Lab.主講

事先錄製好的影片,並非上課時側錄!   觀看影片時,有如我「一對一」跟您面對面講課

 

ASP.NET MVC 5 線上教學

累積時數約 75小時...... 第一天(5.5小時)完整內容,"免費"讓您評估