Aspnetpager控件的使用

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

       分页,不错,确实如此。

       但是分页,如何分页呢?

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

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

 

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

 

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

 

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

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

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

         

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

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

        

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

       那如何获取行号呢?使用

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

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

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

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

      举个具体的例子:

      Aspnetpager控件的使用_第1张图片

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

  

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。

你可能感兴趣的:(数据库,object,存储,sqlserver)