zoukankan      html  css  js  c++  java
  • Asp.Net分页控件

         /// <summary>
            /// 分页方法
            /// </summary>
            /// <param name="pageIndex">当前页码</param>
            /// <param name="totalCount">总条数</param>
            /// <param name="pageSize">一页多少条</param>
            /// /// <param name="url">页面地址</param>
            /// <param name="pageLength">显示多少页码</param>
            /// <returns></returns>
            public static string Page(int pageIndex,int totalCount,int pageSize, string url,int pageLength=5)
            {
                if (totalCount<=0)
                {
                    return "";
                }
                //保证在编写下一页的代码定向时不会受到中间for循环的干扰使pageIndex的值发生改变
                int redirectPageIndex = pageIndex;
    
                //pageSize不可为0
                if (pageSize==0)
                {
                    pageSize = totalCount;
                }
                //获得当前可分页的页数数量
                int pageCount = totalCount / pageSize + (totalCount % pageSize == 0 ? 0 : 1);
                //创建用来拼接字符串的对象
                StringBuilder sb = new StringBuilder();
                //处理首页
                if (pageIndex!=1)
                {
                    //当前传递进来的页码不是第1页,则显示首页和上一页
                    sb.Append(string.Format("<a href={0}?pageIndex={1}&pageSize={2}>首页</a><a href={0}?pageIndex={3}&pageSize={2}>上一页</a>", url,1, pageSize,pageIndex-1));
                }
    
                //保存显示的页码数量
                int length;
                //处理中间的页码
                if (pageLength >= pageCount || pageLength <= 0)
                {
                    //如果需要分成的页码数量比可分成的大
                    length = pageCount;
                }
                else
                {
                    length = pageLength;
                   
    
                }
    
                //方便计算当前应该转折的pageIndex的值
                int t = pageIndex /length;
                int p = pageIndex % length;
    
                //这里给pageIndex重定向
                int l = pageCount - length + 1;
    
                //当前已经到了最后的转折点
                if (pageIndex>=l)
                {
                    pageIndex = l;
                }
                else
                {
                    //还未到
                    if (p==0&&t==1)
                    {
                        //这里说明在第一个转折点
                        pageIndex = 1;
                    }
                    else
                    {
                        //不在第一个
                        if (p==0)
                        {
                            //这是在转折点的时候
                            pageIndex = (t - 1) * length + 1;
                        }
                        else
                        {
                            pageIndex = t * length + 1;
                        }
                        
                    }
                }
    
    
                //如果当前页码为最后一页
                if (pageIndex>=pageCount)
                {
                    //则让pageIndex回复到之前
                    pageIndex = pageIndex - length+1; // + 1;
                }
    
                //处理页码
                for (int i = 0; i < length; i++)
                {
                    sb.Append(string.Format("<a href={0}?pageIndex={1}&pageSize={2}>{1}</a>",url, pageIndex, pageSize));
                    pageIndex++;
                    //temp++;
                }
    
                //处理下一页与末页
                if (redirectPageIndex < pageCount)
                {
                    //当前传递进来的页码不是最后页,则显示末页和下一页
                    sb.Append(string.Format("<a href={0}?pageIndex={1}&pageSize={2}>下一页</a><a href={0}?pageIndex={3}&pageSize={2}>末页</a>",url, redirectPageIndex + 1, pageSize,pageCount));
                }
                sb.Append(string.Format("<span class='info'>第{0}页/共{1}页</span>", redirectPageIndex, pageCount));
              
                return sb.ToString();
            }
    

      

    自己写的,不足不怪

    调用方法:

    前台传递

    pageIndex:前台当前要显示的页码/当前被点击的页码,例如1

    pageSize:前台当前要显示的数据数量,例如10

    totalCount:所有数据的总条数,例如后台获取到100条

    url:参数将要被传递到哪个页面/后台程序内,例如"a.aspx",则会生成<a href="a.aspx?pageIndex=1&pageSize=10">1</a>,也可不传(例如用在ajax异步无刷新分页时,但要自己手动处理分页中a标签的href属性,从中提取出pageIndex=1&pageSize=10)

    pageLength:当前页中想要显示的页码数量,默认为5,例如当前数据库中的数据每次在前台展示10条,可以生成一共12个页码,传入pageLength为5后,则每次只会在页面上显示5个页码.

  • 相关阅读:
    49 我素故我在
    91 棋盘游戏
    55 删除数组重复元素
    54 删除数组元素
    C++虚函数, 纯虚函数
    iOS-OC-多态
    C++函数引用形参和非引用形参
    怎么清理Mac 硬盘里的其他
    Vue.js中this.$nextTick()的使用
    data中有嵌套,取值要链式取
  • 原文地址:https://www.cnblogs.com/rbzz/p/8438639.html
Copyright © 2011-2022 走看看