理解.NET分页

.NET控件如GridView,DetailsView,FormView都支持分页,而ObjectDataSource和SqlDataSource好像也都支持分页.那么数据源控件是怎样支持分页,数据绑定控件又是怎样支持分页的呢?数据源控件和数据绑定控件之间是什么样的关系呢?

.NET有一个PagedDataSource类,该类不是控件,只是封装了所有数据绑定控件需要的分页属性.并且支持各种数据源返回的结果集.也就是说,如果自定义一个需要支持分页的ServerControl 或者Component, 为了支持各种不同的数据源,则也应该使用PagedServerControl来分页.PagedDataSource支持CustomPaging和ServerPaging.其中GridView是ServerPaging.而DataGrid可以支持这两种方式的分页.这样就能解释数据绑定控件是如何支持分页的.

而数据源控件分页则显得不那么统一.但是本质上来讲无非两种:一种是能够自行分页,例如ObjectDataSource,那么它需要暴露一些属性,如CanPage和CanSort,使PagedDataSource理解它的能力.另外一种是只负责取数据,不处理分页的.如SqlDataSource.它同样需要暴露一些属性来使PagedDataSource理解它的能力.真实情况是数据源控件都有对应的数据源视图.例如,ObjectDataSource有ObjectDataSourceView,SqlDataSource有SqlDataSourceView.而这些View,统统继承于DataSourceView.而DataSourceView有一些虚拟字段.

       public   virtual   bool  CanPage  get; }
      
public   virtual   bool  CanRetrieveTotalRowCount  get; }
      
public   virtual   bool  CanSort  get; }

也就是说,虽然各种数据源可以自己来决定是否处理分页.

需要注意的是,数据源控件必须正确设置CanPage,CanRetrieveTotalRowCount属性,因为这些属性将会被数据绑定控件使用,并设置PagedDataSource的属性,指示PagedDataSource来返回数据.简单的,如果数据源已经分页,则PagedDataSource返回所有数据,如果数据源没有分页,则PagedDataSource返回结果集中的部分数据来实现分页.这就是数据源控件和数据绑定控件的分页是如何联系起来的

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值