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 验证, 但这必须在机器级别设置,需要更多的资源,所以不推荐。