zoukankan      html  css  js  c++  java
  • 类似baidu google分页器效果的代码(修改于 kwklover 同学基础上) 西安

    补充:基于JSON的ajax无刷新分页已经做好,请查阅 http://www.cnblogs.com/zhouzhaokun/archive/2011/08/24/2151866.html

    今天本来要做基于json的Ajax分页效果。一大早起来就上园子找菜来吃。。刚好看到 kwklover 同学缩写的 分页器 实现。原文地址:http://www.cnblogs.com/kwklover/archive/2006/04/21/381832.html 我在他的基础上做了些修改,但是仍然不是非常完善!代码如下:

    //http://www.cnblogs.com/kwklover/archive/2006/04/21/381832.html
            protected void Page_Load(object sender, EventArgs e)
            {
                if (Request["page"] == null || Request["page"] == "")
                    BuildPager(10000, 1, 10);
                else
                    BuildPager(10000, Convert.ToInt32(Request["page"]), 10);
            }
            /// <summary>
            /// 创建并显示分页器
            /// </summary>
            /// <param name="totalRecords">总页数</param>
            /// <param name="currentPage">当前页码</param>
            /// <param name="pageSize">页面大小</param>
            private void BuildPager(int totalRecords, int currentPage, int pageSize)
            {
                int alter = 4;
                int startPage = 1;
                int endPage = currentPage + alter;
                int totalPages = this.CalculateTotalPages(totalRecords, pageSize);
    
                if (currentPage > alter)
                {
                    startPage = currentPage - alter;
                }
    
                if (endPage > totalPages)
                {
                    endPage = totalPages;
                }
    
                string strTemp = @"<a title='{0}' href='Default.aspx?page={1}'>{2}</a>  ";
                StringBuilder sb = new StringBuilder("");
                if (currentPage != startPage)
                {
                    if (currentPage > startPage)
                    {
                        sb.Append(string.Format(strTemp, 1, 1, "首页"));
                        sb.Append(string.Format(strTemp, currentPage - 1, currentPage - 1, "上一页"));
                    }
                }
    
                for (int i = startPage; i <= endPage; i++)
                {
                    if (currentPage == i)
                    {
                        sb.Append("<font color=red>" + i + "</font>  ");
                    }
                    else
                    {
                        sb.Append(string.Format(strTemp, i, i, "[" + i + "]"));
                    }
                }
    
                if (currentPage != endPage)
                {
                    sb.Append(string.Format(strTemp, currentPage + 1, currentPage + 1, "下一页"));
                    sb.Append(string.Format(strTemp, totalPages, totalPages, "尾页"));
                }
    
                this.ltlShowPager.Text = sb.ToString();
            }
    
            /**/
            /// <summary>
            /// 计算总页数
            /// </summary>
            /// <param name="totalRecords">总记录数</param>
            /// <param name="pageSize">每页记录数</param>
            private int CalculateTotalPages(int totalRecords, int pageSize)
            {
                int totalPagesAvailable;
    
                totalPagesAvailable = totalRecords / pageSize;
    
                //由于C#的整形除法 会把所有余数舍入为0,所以需要判断是否需要加1
                if ((totalRecords % pageSize) > 0)
                    totalPagesAvailable++;
    
                return totalPagesAvailable;
            }
    
    先贴上分页器代码。稍后我会上传 基于json 的ajax 分页。。。高手勿喷,:-)。。。欢迎交流
  • 相关阅读:
    MySQL 抓包工具
    php安全配置记录和常见错误梳理
    Mongodb副本集+分片集群环境部署记录
    线上mongodb 数据库用户到期时间修改的操作记录
    Redis+TwemProxy(nutcracker)集群方案部署记录
    Linux下Redis主从复制以及SSDB主主复制环境部署记录
    以多个实例方式打开Notepad++
    什么才是程序员的核心竞争力?zz
    谈谈如何在面试中发掘程序猿的核心竞争力zz
    解决Android SDK Manager更新时出现问题
  • 原文地址:https://www.cnblogs.com/zhouzhaokun/p/2151558.html
Copyright © 2011-2022 走看看