在开发搜索引擎等应用时,提供一个翻页导航条是必须的。我看过网上一些相关的代码,搞得很复杂。晕~~~ 其实其数学计算公式非常简单,本文提供两种最常用的算法。

翻页式

样式如下。每次显示10个页码,并提供"前十"、"后十"翻页。

[1] 2 3 4 5 6 7 8 9 10 下十页 末页
1 2 3 4 5 6 [7] 8 9 10 下十页 末页
1 2 3 4 5 6 7 8 9 [10] 下十页 末页
首页 前十页 [11] 12 13 14 15 16 17 18 19 20 下十页 末页
首页 前十页 11 12 13 14 15 [16] 17 18 19 20 下十页 末页

计算公式:(当前页序号最小值为1)

int x = 当前页序号 / 10;
if (当前页序号 % 10 == 0) --x;
int startPage = (x * 10) + 1;
int endPage = Math.Min(总页数, startPage + 9);

生成翻页式导航代码演示:

private string GetNavBarHtml(string s, int pageIndex, int pageCount)
{
    // 计算显示页码
    int x = pageIndex / 10;
    if (pageIndex % 10 == 0) --x;
    int startPage = (x * 10) + 1;
    int endPage = Math.Min(pageCount, startPage + 9);

// 生成换页代码
    System.Text.StringBuilder sb = new StringBuilder();
    string url = "<a href = \"search.aspx?s={1}&page={2}\">{0}</a>";

if (startPage > 1)
    {
      sb.Append(String.Format(url, "首页", s, 1));
      sb.Append("&nbsp");
      sb.Append(String.Format(url, "前十页", s, startPage - 1));
      sb.Append("&nbsp");
    }
    
    for (int i = startPage; i <= endPage; i++)
    {
      if (i != pageIndex)
        sb.Append(String.Format(url, i, s, i));
      else
        sb.Append(string.Format("[{0}]", i));
      
      sb.Append("&nbsp");
    }

if (pageCount > endPage)
    {
      sb.Append(String.Format(url, "后十页", s, endPage + 1));
      sb.Append("&nbsp");
      sb.Append(String.Format(url, "末页", s, pageCount));
    }
    
    return sb.ToString();
}

滚动式

样式如下。将当前页码放在中间,滚动两端页码。

[1] 2 3 4 5 6 7 8 9 10 末页
1 2 3 4 [5] 6 7 8 9 10 末页
首页 2 3 4 5 [6] 7 8 9 10 11 末页
首页 5 6 7 8 [9] 10 11 12 13 14 末页
首页 8 9 10 11 [12] 13 14 15 16 17 末页

计算公式:(当前页序号最小值为1)

int startPage = Math.Max(当前页序号 - 4, 1);
int endPage = Math.Min(页总数, startPage + 9);

生成滚动式导航代码演示:

private string GetNavBarHtml(string s, int pageIndex, int pageCount)
{
    // 计算显示页码
    int startPage = Math.Max(pageIndex - 4, 1);
    int endPage = Math.Min(pageCount, startPage + 9);

// 生成换页代码
    System.Text.StringBuilder sb = new StringBuilder();
    string url = "<a href = \"search.aspx?s={1}&page={2}\">{0}</a>";

if (startPage > 1)
    {
      sb.Append(String.Format(url, "首页", s, 1));
      sb.Append("&nbsp");
    }
    
    for (int i = startPage; i <= endPage; i++)
    {
      if (i != pageIndex)
        sb.Append(String.Format(url, i, s, i));
      else
        sb.Append(string.Format("[{0}]", i));
      
      sb.Append("&nbsp");
    }

if (pageCount > endPage)
    {
      sb.Append(String.Format(url, "末页", s, pageCount));
    }
    
    return sb.ToString();
}

转载于:https://www.cnblogs.com/0000/archive/2009/12/08/1619060.html

翻页导航条页码计算方法相关推荐

  1. 【前端】真实手感翻书,书页卷角,JS翻页

    完整一套JS在线阅读器: http://www.turnjs.com/ 真实手感翻页 https://www.html5tricks.com/demo/css3-page-flip/index.htm ...

  2. 润乾单元格加html点击事件_报表输入页码翻页(润乾 V2018)

    报表数据分了太多页,一页一页翻页查看数据嫌麻烦,可以试试这种翻页效果--输入页码翻页. 润乾报表提供了翻页相关的 JS 函数,可以在报表展现的页面中添加 JS 调用翻页函数实现输入页码跳转到对应页. ...

  3. Bootstrap 分页导航中的翻页组件

    分页导航中的翻页 一些简单的网站,比如博客或者杂志网站,希望用更少的标记和样式,来创建简单的"前一页"和"后一页"的翻页导航. Bootstrap中,只需为列表 ...

  4. Bootstrap导航条、分页导航

    [导航条navbar] 在bootstrap中导航与导航条在外观方面差不多,但在实际应用时,导航条却要复杂的多. 导航条制作方法: 第一步:首先在制作导航的列表(<ul class=" ...

  5. Bootstrap(五) 导航条、分页导航

    本文转自:http://www.imooc.com/learn/141 导航条基础 导航条(navbar)和上一节介绍的导航(nav),就相差一个字,多了一个"条"字.其实在Boo ...

  6. office在线预览哪家强?不能播放ppt动画,不能监听翻页?

    前言 众所周知,word.excel.ppt 和 pdf 文件在线预览有很多解决方案,但大多无法播放 ppt 动画,或者功能非常单一.这不,最近产品经理闭关修炼三天,提出了如下需求: 监听文档翻页,根 ...

  7. html 上下翻页效果代码,原生js实现可以带上下翻页的翻页功能(代码)

    本篇文章给大家带来的内容是关于原生js实现可以带上下翻页的翻页功能(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 翻页功能在渲染数据时经常用到,下面是使用原生JS去实现的一个 ...

  8. Python+Selenium自动化测试之页码,前一页、后一页、翻页

    思路:获取当前的总记录数,每页大小,算出总的页数,然后根据总页数实现翻页,在翻页时,可以获取每一页的内容存在列表中,为后面的模糊匹配做准备. BasePage中封装 # 页面的页码信息,记录总数.分页 ...

  9. java实现小说阅读器(功能:查看全文、统计总行数/总页码数、查找指定行、指定页码、实现翻页)

    1.任务要求: 在DOS窗口下,实现查看全文.统计总行数/总页码数.查找指定行.指定页码.翻页 2.阅读器实现方式 输入1(查看全文.统计总行数/总页码数.) 输入2(读取指定行,查找其上下行) 输入 ...

最新文章

  1. 虚拟机win7装oracle,win7系统安装Oracle VM VirtualBox虚拟机的操作方法
  2. C 语言 cgi 程序简单总结
  3. python requests cookie_Python requests模块cookie实例解析
  4. 重磅发布!吴恩达 AI 完整课程资源超级大汇总!
  5. BZOJ4293 Siano
  6. IT技术人终究要走上管理职位吗?
  7. 架设好传奇登录器显示无法连接服务器,完美登录器使用常见问题解决办法
  8. Android开发——ListView局部刷新的实现
  9. 利用edge模拟ie8浏览器环境
  10. 数字单位转换(例:元->万元)
  11. android_97_TouchSlop
  12. SpringBoot 文件上传(可配置文件上传路径)
  13. 计算机 蓝牙鼠标卡顿,蓝牙鼠标卡顿、漂移现象的解决方法
  14. Krita源码分析(一)——项目结构
  15. 白菜u盘安装linux,使用U盘安装ubuntu 12.04(使用大白菜u盘启动工具)
  16. 为程序添加windows注册表
  17. 具有外内学习和单色瓶颈的图像修复——两阶段渐进式图像修复示例【CVPR 2021】
  18. 输入字符串,将字符串逆向输出
  19. E07【餐厅】What would you recommend?
  20. HTTP Host 字段作用

热门文章

  1. python统计csv行数_对Python 多线程统计所有csv文件的行数方法详解
  2. 哪种营销方法效果最差_营销软文写作的三大技巧,你知道吗?
  3. layui 表格内容写temple函数_layui表格-template模板的三种用法
  4. python和anaconda的区别_anaconda和python区别
  5. linux pcre-devel,ubuntu - 我应该为'pcre-devel'安装什么软件包? - Ubuntu问答
  6. oracle 批处理 执行结果,在windows下怎么在批处理文件里面执行sqlplus并得到结果?...
  7. java 连接 oracle 10_java 怎么把原本连接32位oracle10g换到连接64位oracle10g
  8. ue4 曲线图实现 蓝图_UE4蓝图解析(一)
  9. populate_dir
  10. OpenCV(基础补充)颜色空间HSV *args与**args(滑动条传参问题)