通用的分页显示方法

        在列出大量的信息时,需要对列出的信息进行分页,就要显示直观的分页信息上一页、下一页,当前显示第几页,共几页,页数下拉列表,直接定位到选择的页数。

        下页的方法是显示分页内容的通用方法:

         /// <summary>
        /// 分页显示函数,返回分页内容
        /// </summary>
        /// <param name="_strUrl">链接的地址</param>
        /// <param name="_intTotal">总记录数</param>
        /// <param name="_intOdd">每页的记录数</param>
        /// <param name="Currpage">当前页</param>
        /// <returns>string 分页内容</returns>
        protected string GetPagesLnk(string _strUrl, int _intTotal, int _intOdd, string Currpage)
        {
            string _strPageCodeHTML = "";
            string _strCurrpage = Currpage;
            int _intTotalPage, _intCurrPage;
            if (_strUrl.IndexOf("?") == _strUrl.Length)
            {
                _strUrl = _strUrl + "1=1";
            }
            if (_strUrl.IndexOf("?") == -1)
            {
                _strUrl = _strUrl + "?1=1"; //如果没有带参数,则加一个“?”以便后面加参数
            }
            _intTotalPage = _intTotal / _intOdd;
            if (_intTotal % _intOdd > 0)
            {
                _intTotalPage = _intTotalPage + 1;
            }
            _intCurrPage = int.Parse(_strCurrpage);
            if (_intCurrPage < 1)
            {
                _intCurrPage = 1;
            }
            if (_intCurrPage > _intTotalPage)
            {
                _intCurrPage = _intTotalPage;
            }
            if (_intTotalPage != 1)
            {//总页数大于1时,才显示翻页
                int totalPage = _intTotal % _intOdd > 0 ? _intTotal / _intOdd + 1 : _intTotal / _intOdd;
                _strPageCodeHTML = Currpage + " / " + totalPage + "页&nbsp;&nbsp;";
                if (_intCurrPage != 1)
                {
                    _strPageCodeHTML = _strPageCodeHTML + "<a href=/"" + _strUrl + "&currpage=" + (_intCurrPage - 1) + "/">上一页</a> ";
                }
                //计算第N页的前后N页显示
                int showlength, Before, After, Variance;
                showlength = 10;   //设置每页显示showlength个翻页标签
                Variance = 0;    //差额默认为0(没有差额)
                Before = _intCurrPage - (showlength - 1) / 2; //为当前页显示平衡(左右两边显示一样多的链接),偶数转为奇数
                if (Before < 1)
                {//如果超出最小页,则算出“差额”(用来补给最后页),“前页”置为“第一页”
                    Variance = 1 - Before;
                    Before = 1;
                }
                After = _intCurrPage + (showlength - 1) / 2 + Variance; //计算最“后页”(需要加上差额)
                if (After > _intTotalPage)
                {//如果超出最大页码,则“后页”置为“最大页”
                    if (Before > 1)
                    {//如果“前页”还有向前移动的空间
                        Variance = Before - 1;      //计算“前页”可以移动的差额
                        if (Variance < (After - _intTotalPage))
                        {//如果差额比“后页”与“最大页”小,则直接置为“第一页”
                            Before = 1;
                        }
                        else
                        {//否则,“前页”再向前移动“差额”页即可
                            Before = Before - (After - _intTotalPage);
                        }
                    }
                    After = _intTotalPage;
                }

                _strPageCodeHTML = _strPageCodeHTML + " <select id='SelectPage' οnchange=/"javascript:location.href='" + _strUrl + "&currpage='+this.options[this.selectedIndex].value+''/">";
                for (int i = Before; i <= After; i++)
                {//循环列出下拉框数值
                    if (i == _intCurrPage)
                    {
                        _strPageCodeHTML = _strPageCodeHTML + "<option value='" + i + "' selected='selected'>" + i + "</option>";
                    }
                    else
                    {
                        _strPageCodeHTML = _strPageCodeHTML + " <option value='" + i + "'>" + i + "</option>";
                    }
                }
                _strPageCodeHTML = _strPageCodeHTML + "</select>";

                if (_intCurrPage != _intTotalPage)
                {
                    _strPageCodeHTML = _strPageCodeHTML + " <a href=/"" + _strUrl + "&currpage=" + (_intCurrPage + 1) + "/">下一页</a> ";
                }
            }
            return _strPageCodeHTML;
        }

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值