摘要:[ASP.NET]關於GridView控制項常用的事件的發生順序
因為最近寫網頁用到GridView來做依些資料的呈現,
但是有時候卻在GridView的事件內常常打了死結,
乾脆來仔細看看GridView上的事件順序是如何排序的,
以免自己忘了又在這上面白花了不少時間!!
以下紀錄都用最單純的狀態來看:
狀況一
直接在.aspx上拉進一個GridView控制項,
並且在Page_Load事件內去加上GridView的DataSource,
此時的事件發生順序是:
順序 | 事件名稱 |
1 | GridView1_Init |
2 | Page_Load |
3 | GridView1_DataBinding |
4 | GridView1_RowCreated (DataSource的資料有幾列就發生幾次) |
5 | GridView1_RowDataBound (DataSource的資料有幾列就發生幾次) |
6 | GridView1_DataBound |
7 | GridView1_Load |
8 | GridView1_PreRender |
9 | GridView1_Unload |
狀況二
若是在PageLoad內的DataSource繫結是寫在if(!IsPostBack)內,
此時在.aspx內加入一個Button控制項,
並且按下Button產生PostBack後,
此時事件順序是:
順序 | 事件名稱 |
1 | GridView1_Init |
2 | GridView1_RowCreated (DataSource的資料有幾列就發生幾次) |
3 | Page_Load |
4 |
|
5 | GridView1_Load |
6 | Button1_Click |
7 | GridView1_PreRender |
8 | GridView1_Unload |
狀況三:
相對於狀況二,
把DataSource的繫結直接寫在Page_Load內,
同樣的按下Button產生了PostBack,
綜合了狀況一和狀況二,
不難理解會出現下面的事件順序:
順序 | 事件名稱 |
1 | GridView1_Init |
2 | GridView1_RowCreated (DataSource的資料有幾列就發生幾次) |
3 | Page_Load |
4 | GridView1_DataBinding |
5 | GridView1_RowCreated (DataSource的資料有幾列就發生幾次) |
6 | GridView1_RowDataBound (DataSource的資料有幾列就發生幾次) |
7 | GridView1_DataBound |
8 | GridView1_Load |
9 | Button1_Click |
10 | GridView1_PreRender |
11 | GridView1_Unload |