加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

Aspnetpager控件的使用

发布时间:2020-12-12 14:57:23 所属栏目:MsSql教程 来源:网络整理
导读:?? ?? 若是查询出来的数据比较多,如何办? ?????? 分页,不错,确实如此。 ?????? 但是分页,如何分页呢? ????? 上篇博客中提到GridView控件,确实它很智能,有个自动分页功能,可以把查询出来的数据,以分页的形式展现给用户。 ????? ?注意:是把查询出来
?? ?? 若是查询出来的数据比较多,如何办?

?????? 分页,不错,确实如此。

?????? 但是分页,如何分页呢?

????? 上篇博客中提到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。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读