分页算法

 private void DataBinds()
    {
        int pageItem = iarticle.GetArticlePageCount();//获得文总行数

        int num = pageItem % 10;//计算总页数

        int pageSize = pageItem / 10; //总页数

        if (num > 0) //如果大于0则总页数加1
        {
            pageSize++;
        }


        StringBuilder sb = new StringBuilder();

        int forFrom = 0;//循环起始页

        string pageindex = String.Empty;//当前页

        if (Request.QueryString["page"] != null)//当前页索引不等于空则得到当前页
        {
            pageindex = Request.QueryString["page"];
        }
        else
        {
            pageindex = "0";//否则当前页索引等于0
        }

        forFrom = (Convert.ToInt32(pageindex) / 10) * 10;//计算循环起始页

        int forpage = forFrom + 10;//计算循环终止页

        if (pageSize <= forpage)//如果总页数小于等于循环终止页则等于循环终止页
        {
            forpage = pageSize;
        }

        if (forFrom > 0)//判断循环的页面是否在1-10之内,如果为true则加上'<<',代表第一页
        {
            sb.Append(String.Format("<a href='Default.aspx?page{0}'>{1}</a>", 0, "<<"));
        }

        if (forFrom > 0)//判断循环的页面是否在1-10之内如果为true则加上:'<',代表上一页
        {
            sb.Append(string.Format("<a href='Default.aspx?page={0}'>{1}</a>", forFrom - 1, "<"));
        }

        for (int i = forFrom; i < forpage; i++)//循环出当前的计算出的页面
        {
            sb.Append(string.Format("<a href='Default.aspx?page={0}'>{1}</a>", i, i + 1));
        }

        if (pageSize > forpage)//如果总页数大于循环终止页则在终止页后加上'>' 
        {                      //因为索引从0开始计算所以不需要+1,代表下一页,并且加上最后一页
            sb.Append(string.Format("<a href='Default.aspx?page={0}'>{1}</a>", forpage, ">"));
            sb.Append(string.Format("<a href='Default.aspx?page={0}'>{1}</a>", pageSize - 1, ">>"));
        }

        ltPage.Text = sb.ToString(); //放入Adrotator控件

        //绑定数据因为索引从0开始计算的所以传入数据库需要+1
        this.Repeater1.DataSource = iarticle.GetArticleAll((Convert.ToInt32(pageindex) + 1), 10);

        this.DataBind();
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值