GridView中的RowCommand与Sorting事件的一些问题

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章