asp.ent Repeter实现分页

在ASP.net中Repeater控件是一个经常要用到的控件,DataGrid一般都是用于以表格形式显示的情形,而在丰富多彩的网页样式的网页中,比如说BLOG,留言板等,要使用DataGrid就相对要吃力一些,Repeater比datagrid更容易定制样式,利用模板可以像在ASP中那样制作漂亮的界面。然而Repeater没有提供分页功能,那怎么来实现分页呢?方法有很多,这里我讲一上用PagedDataSource来实现Repeater的分页功能。这种方法有点类似DataGrid自带的分页功能,有一个不足之处,那就是每次都要加载所有的数据内容,这在数据量很大的时候对WEB服务器的要求比较高,效率也相对低,但在一般的场合,还算是一个比较好的选择,毕竟Microsoft提供这样的功能,也是有它的实用价值的。如果想要提高分页的效率,我们就要使用另外的方法,让每次只加载页面显示的内容,而不是加载所有的内容,我会在以后的日子里研究一下,然后再写出来。

        在处理分页前,假定已经将所要显示的数据读出,存放到实例名为MyDataSet这样一个DataSet类型数据中,另外页面中有几个用来显示页面链接信息的HyperLink,主要有
        LinkFirstPage:HyperLink型 首页链接
        LinkPrePage: HyperLink型 前页链接
        LinkLastPage:HyperLink型 末页链接
        LinkNextPage:HyperLink型 后页链接
 这里我只说一下这四个链接的实现方法,至于其他的像列表当前页附近的页面链接,页面跳转等就不讲了,实现方法类似,如果想要与我讨论的,欢迎联系我。  
 

        //===================================== = = = ===============================================
        PagedDataSource MyPagedDS = new PagedDataSource();      //声明一个新的PagedDataSource实例MyPagedDS
        MyPagedDS.DataSource = MyDataSet.Tables[0].DefaultView; //给MyPagedDS设置数据源
        MyPagedDS.AllowPaging = true;                           //允许分页
        MyPagedDS.PageSize = 5;                             //每页的记录数

        //得到当前要显示的页面的页码
        int CurPage = 1;
        if(Request["page"] != null)
            try
            {
                CurPage = Convert.ToInt32(Convert.ToString(Request["page"]));
            }
            catch
            {
                CurPage = 1;
            }

        MyPagedDS.CurrentPageIndex = CurPage-1;

        //---------------------------------------------------------------------------
        //显示相关信息

        //显示当前页及总页数
        this.LabelCurrPage.Text = CurPage + "/" + MyPagedDS.PageCount;
       
        //首页链接,上一页链接
        if(!MyPagedDS.IsFirstPage)
        {
            this.LinkFirstPage.Visible=true;
            this.LinkFirstPage.NavigateUrl ="page=1";

            this.LinkPrePage.Visible = true;
            this.LinkPrePage.NavigateUrl = "?page=" + Convert.ToString(CurPage-1);
        }
        else
        {
            this.LinkFirstPage.Visible=false;
            this.LinkPrePage.Visible = false;
        }

        //末页链接,下一页链接
        if(!MyPagedDS.IsLastPage)
        {
            this.LinkLastPage.Visible=true;
            this.LinkLastPage.NavigateUrl = "?page=" + Convert.ToString(MyPagedDS.PageCount);

            this.LinkNextPage.Visible = true;
            this.LinkNextPage.NavigateUrl = "?page=" + Convert.ToString(CurPage+1);
        }
        else
        {
            this.LinkLastPage.Visible=false;
            this.LinkNextPage.Visible = false;
        }

        //============================================== = = = = ======================================
       

        //Repeater绑定
        this.RepeaterBlog.DataSource = MyPagedDS;
        this.RepeaterBlog.DataBind();

原文地址:https://www.cnblogs.com/caishuowen/p/2036819.html