Aspnetpager控件的使用

若是查询出来的数据比较多,如何办?

分页,不错,确实如此。

但是分页,如何分页呢?

上篇博客中提到GridView控件,确实它很智能,有个自动分页功能,可以把查询出来的数据,以分页的形式展现给用户。

注意:是把查询出来的所有数据,然后以分页的形式展现给用户。貌似它确实以第一页,第二页显示……,但是,前提确实早已经把所有的数据查询出来。此时的分页只是一个形式而已,称之为假分页。

但是每个事物都有他自己独特的一面,不能因其缺点而否定其全部哈。

这种办法可以适合于少量数据,一页显示不全,可以使用控件的分页来完美展示的。

但是对于大量的数据,这种假分页,则在显示给用户时,性能下降 。所以对于大量数据,还是选择真分页,所谓的真分页,就是数据库中分页,选择第几页到第几页,然后就可以显示你选择的,所以每次查询显示的则是最多十几条数据而已。

在此使用Aspnetpager控件来讲述真分页。。

对于Aspnetpager,这个控件,如何加载以及加载过程中可能会出现的问题,在上篇博客中已经讲述,在此直接介绍其用法。

真分页的原理:选择数据库中第几条到第几条的数据。

那如何确定第几条到第几条?使用数据库中的行号来确定。

对于此行号而言,若是删除一条记录,则行号会逐步代替,一直是一个顺序的序列。

那如何获取行号呢?使用

select ROW_NUMBER () over(order by courseNo) as 行号,* from courseInfo
courseNo:代表主键。

但是此函数只有sqlserver2005以及以上的版本才具有,而sqlserver2000没有哈。

行号是获得了,那么第几条到几条如何实现呢?代码中如何传参呢?别忘了Aspnetpager控件。

此控件的使用:首先应该设置RecordCount属性(一共多少条数据),然后设置属性PageSize(每页显示的数据)。然后传的参数是Aspnetpager的属性StartRecordIndex,EndRecordIndex。

举个具体的例子:

使用分页的查询存储过程:

ALTER proc [dbo].[proc_SelectByPropertyAndCollegePaging] @collegeNo varchar(50), @property varchar(50), @beginSize int, @endSize int as begin with temp as ( select ROW_NUMBER () over(order by courseNo) as 行号,* from courseInfo where collegeNo =@collegeNo and courseProperty =@property and IsEffective='是' ) select * from temp where 行号 between @beginSize and @endSize end

不含分页的查询存储过程:

ALTER proc [dbo].[proc_SelectByPropertyAndCollege] @collegeNo varchar(50), @property varchar(50) as begin select * from courseInfo where collegeNo =@collegeNo and courseProperty =@property and IsEffective='是' end


界面pageLoad事件:

if (!Page.IsPostBack) { //给aspnetpage赋值 AspNetPager1.RecordCount = new SelectCourseManager().SelectByCollegeAndProperty(ddlCourseProperty.SelectedValue, ddlCollege.SelectedValue).Rows.Count; //显示查询到的课程信息 BindCourse(); }


private void BindCourse() { DataTable dtCourse = new SelectCourseManager().SelectByCollegeAndProperty(ddlCourseProperty.SelectedValue, ddlCollege.SelectedValue,AspNetPager1 .StartRecordIndex ,AspNetPager1 .EndRecordIndex ); gvCourse.DataSource = dtCourse; gvCourse.DataBind(); }

protected void AspNetPager1_PageChanged(object sender, EventArgs e) { //重新绑定 BindCourse(); }


此例子使用的分层的模式实现的,此代码只显示了界面上的代码,存储过程中的查询方法,已经给出,其中的SelectByCollegeAndProperty 方法(是BLL层),用重载实现,一个含有分页,另一个不含分页。对于DAL层,也是用重载使用,在此不再贴出。

当然此控件可以设置样式,可以更改其样式,上图中控件的样式是拍拍网样式。分页实际是数据库分页,上述的分页存储过程体现这点,但是向用户展示分页,则是借助Aspnetpager·控件。。其中最重要的是其RecordCount和PageSize、以及StartRecordIndex,EndRecordIndex。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值