MSDN如下描述RowCommand:
在單擊 GridView 控件中的按鈕時,將引發 RowCommand 事件。這使您可以提供一個這樣的事件處理方法,即每次發生此事件時執行一個自定義例程。
GridView 控件中的按鈕也可調用該控件的某些內置功能。若要執行這些操作之一,請將按鈕的 CommandName 屬性設置爲下表中的某個值。
“Cancel”“Delete”“Edit”“Page”“Select”“Sort”“Update” 表略
儘管單擊按鈕時將引發 RowCommand 事件,但仍建議您使用該表中列出的事件來執行該操作。
將 GridViewCommandEventArgs 對象傳遞到事件處理方法,以便您可以確定被單擊按鈕的命令名和命令參數。
MSDN如下描述Sorting:
單擊用於列排序的超鏈接以後,在 GridView 控件處理相應的排序操作之前,將引發 Sorting 事件。這使您可以提供一個這樣的事件處理方法,即每次發生此事件時執行一個自定義例程(如取消排序操作)。
GridViewSortEventArgs 對象將被傳遞給事件處理方法,以便您可以確定列的排序表達式,還可以指示應取消選擇操作。若要取消選擇操作,請將 GridViewSortEventArgs 對象的 Cancel 屬性設置爲 true。
=========================================================我的分界線
那麼,如果用SqlDataSource控件綁定數據源的話,GridView是一個很方便的東西,事件處理、分頁、排序都全自動了。但在分層開發過程中,恐怕不能直接使用控件綁定數據源的方法,因爲和數據庫直接打交道的要讓數據層DAL去做。那麼如果還要使用GridView來顯示數據的話,就有很多東西需要編程實現。
如分頁:
如排序:
另外,看下ViewState這個東西:
ViewState 是什麼?
ViewState 用來跟蹤和保存控件的狀態信息。否則這些信息可能會丟失,原因可能是這些值不隨着 form 回發,或者根本就不在 page 的 html 中。
ViewState 中保存着代碼中改變的控件屬性,通過代碼綁定到控件的任何數據,以及由用戶操作觸發,回發的任何更改。
ViewState 還提供了一個狀態包(StateBag), 這是一個特殊的集合或字典(collection or dictionary), 可以用來保存,通過一個 key 來恢復任意的對象或者值。
ViewState 的格式
保存在表單中的 __VIEWSTATE 隱藏字段。是 Base64 編碼過的,而不是加密!
但要加密也是可以的(設置 enableViewStateMac 來使用 machine key 進行 hash)
加密:設置 machineKey 驗證, 但這必須在機器級別設置,需要更多的資源,所以不推薦。