Aspnetpager控件的使用
?? ?? 若是查询出来的数据比较多,如何办?
?????? 分页,不错,确实如此。 ?????? 但是分页,如何分页呢? ????? 上篇博客中提到GridView控件,确实它很智能,有个自动分页功能,可以把查询出来的数据,以分页的形式展现给用户。 ????? ?注意:是把查询出来的所有数据,然后以分页的形式展现给用户。貌似它确实以第一页,第二页显示……,但是,前提确实早已经把所有的数据查询出来。此时的分页只是一个形式而已,称之为假分页。 ? ??????? 但是每个事物都有他自己独特的一面,不能因其缺点而否定其全部哈。 ? ????????这种办法可以适合于少量数据,一页显示不全,可以使用控件的分页来完美展示的。 ? ??????? 但是对于大量的数据,这种假分页,则在显示给用户时,性能下降 。所以对于大量数据,还是选择真分页,所谓的真分页,就是数据库中分页,选择第几页到第几页,然后就可以显示你选择的,所以每次查询显示的则是最多十几条数据而已。 ????? ? 在此使用Aspnetpager控件来讲述真分页。。 ??????? ?对于Aspnetpager,这个控件,如何加载以及加载过程中可能会出现的问题,在上篇博客中已经讲述,在此直接介绍其用法。 ????????? ?????? ?真分页的原理:选择数据库中第几条到第几条的数据。 ?????? ?那如何确定第几条到第几条?使用数据库中的行号来确定。 ???????? ??????? 对于此行号而言,若是删除一条记录,则行号会逐步代替,一直是一个顺序的序列。 ?????? 那如何获取行号呢?使用 ???? select ROW_NUMBER () over(order by courseNo) as 行号,* from courseInfo ????? 但是此函数只有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
? 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();
}
?????? 当然此控件可以设置样式,可以更改其样式,上图中控件的样式是拍拍网样式。分页实际是数据库分页,上述的分页存储过程体现这点,但是向用户展示分页,则是借助Aspnetpager·控件。。其中最重要的是其RecordCount和PageSize、以及StartRecordIndex,EndRecordIndex。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |