一个显示页码用的helper。。。
没想到这么不起眼的东西杀了我不少脑细胞……
在控制台中测试没发现啥问题,代码风格什么的就先不管它了
public static class PageNumExt
{public delegate void ToDo(long i);public delegate void PadToDo();public static void GeneratePageNum(this object o,long curr, ToDo cfixToDo, PadToDo padToDo, long fixLen = 2, long padding = 1){o.GeneratePageNum(curr, cfixToDo, cfixToDo, padToDo, fixLen, padding);}public static void GeneratePageNum(this object o,long curr, ToDo currTodo, ToDo cfixToDo, PadToDo padToDo, long fixLen = 2, long padding = 1){GeneratePageNum(o,curr, currTodo,1, long.MaxValue,cfixToDo, i => { },fixLen, cfixToDo,padding, padToDo,fixLen, curr,cfixToDo, i => { });}public static void GeneratePageNum(this object o,long curr, ToDo currToDo,long begin, long end,ToDo beginToDo, ToDo endToDo,long cfix, ToDo cfixToDo,long padding, PadToDo padToDo,long sfixBegin, long pfixEnd,ToDo sfbToDo, ToDo pfeToDo){long i = begin;if (begin < curr){beginToDo(begin);i++;var g1 = i + sfixBegin;var g3 = curr - cfix;var g2 = g3 - padding;if (g1 > g3)g1 = g3;for (; i < g1; i++)sfbToDo(i);if (i < g2){padToDo();i = g2 + 1;}elsefor (; i < g3; i++)cfixToDo(i);}for (; i < curr; i++)cfixToDo(i);currToDo(curr);i = curr + 1;var g = i + cfix;if (g > end)g = end;for (; i < g; i++)cfixToDo(i);if (end > curr){var g1 = end - pfixEnd;var g2 = g1 - padding;if (g < g2)padToDo();elsefor (; i < g1; i++)cfixToDo(i);if (i < g1)i = g1;for (; i < end; i++)pfeToDo(i);endToDo(end);}}
}
参数解说:
curr - 当前页码
currToDO - 怎样输出当前页码
begin - 页码从多少开始
end - 页码到多少结束
beginToDo - 怎样显示起始页码
endToDo - 怎样显示结束页码
cfix - 当前页的前后页码输出多少个
cfixToDo - 当前页前后页码怎样输出
padding - 所有没有被涵盖进其它参数的页码,如果出现次数超过这个参数的值,则完全省略掉
padToDo - 被省略掉的页码应该怎样表现
sfixBegin - 从起始页码开始,延伸显示多少个页码
pfixEnd - 到结束页码位置,延伸显示多少个靠近结束位置的页码
sfbToDo - 起始页码附近的页码应该怎么样表现
pfeToDo -结束页码附近的页码应该怎么样表现
测试用的控制台程序代码:
for (var j = 1; j < 20; j++)
{args.GeneratePageNum(j, i =>{Console.Write('[');Console.Write(i);Console.Write(']');Console.Write(' ');},2, 18,i =>{Console.Write('<');Console.Write(i);Console.Write(' ');},i =>{Console.Write(i);Console.Write('>');},2, i =>{Console.Write('#');Console.Write(i);Console.Write(' ');},1, () => Console.Write(".. "),2, 2, i =>{Console.Write('[');Console.Write(i);Console.Write(' ');}, i =>{Console.Write(i);Console.Write(']');Console.Write(' ');});Console.WriteLine();
}for (var j = 1; j < 10; j++)
{args.GeneratePageNum(j, i =>{Console.Write('[');Console.Write(i);Console.Write(']');Console.Write(' ');}, i =>{Console.Write(i);Console.Write(' ');}, () =>{Console.Write(".. ");}, 2, 1);Console.WriteLine();
}
转载于:https://www.cnblogs.com/NanaLich/archive/2010/07/08/page-number-generate-helper.html
一个显示页码用的helper。。。相关推荐
- lodop打印不显示页码_Excel|13个Excel打印技巧汇总,打印技巧大全
打印技巧是工作必备,无需理由! 很多时候大家得不到想要的打印效果,偶尔打印一两张表格,会出现各种状况:标题行不见了?打印范围错了?页眉页脚不对? 打印一个内容,总得弄出一堆草稿纸纸张来之不易,且打且珍 ...
- WORD中如何设置前几页不显示页码,同时更改总页数
word文档在同一文件中插入页码时,总是从第一页到末页顺序编码,但我这一文件从第1-4页为"提纲"或者"前言",不需编页码,从第5页开始才是正文,那么怎样才能使 ...
- 怎样在Word2007里设置首页不显示页码,第二页页码从“2”开始显示?
引自:http://zhidao.baidu.com/question/91035930.html 在写毕业论文,没有封面.因此第一页的页码应该是"1".但要求是第一页不显示页码, ...
- Word首页不显示页码的2种方法
方法1:在"页面设置"中选择奇偶页不同,在页眉页脚中选择"设置页码格式",设置起始页码为0,然后在第一页删除0页脚即可. (我认为如果仅仅是为了首页不显示页码的 ...
- Mac版Word设置从第K页开始显示页码
tags: Word Tips 写在前面 最近有同学问我怎么在word文档中从第四页开始设置页码, 也就是首页以及第二页第三页的说明页都不编页码, 从第四页开始页码为1, 然后往后编号这种. 一开始我 ...
- 解决 echarts柱状图x轴数据隔一个显示
echarts柱状图x轴数据隔一个显示 在显示一个柱状图的时候,x轴的数据是隔一个显示的,但是hover的时候却能显示出当前轴x轴的名称,如下图: 那就只能说明这个轴的名称太长了,所以导致它默认就隔一 ...
- win7系统怎么样在计算机里找桌面,如何在64位win7电脑中创建一个“显示桌面”的快捷方式...
在之前的XP系统中,咱们桌面下方的任务栏窗口中是有一个"显示桌面"的图标的,不管咱们在电脑中开启多少网页,开启多少程序,只需要点击一下这个"显示桌面"的图标,咱 ...
- html图片按页码显示,html - 在打印html文档时显示页码 - 堆栈内存溢出
几个月前,当我使用以下代码在浏览器(firefox)中打印HTML文档时,能够显示页码: body { width: 300px; counter-reset: page; } #header { b ...
- phppage类封装分页功能_php显示页码分页类的封装
本文实例为大家分享了php封装显示页码的分页类,供大家参考,具体内容如下 一.代码 conn.php class Mysql{ public function __construct(){ $this ...
最新文章
- LINUX UMASK详解
- 机器人如何在不断变化的世界中“找到”自己?
- 【腾讯三面】你能现场写一下LRU算法吗?
- R语言使用edit函数在Rsudio中生成数据编辑器(在windows中生成编辑器)、在编辑器中输出需要的数据生成最终的dataframe
- Hotel California
- mysql数据压缩加密_MySQL 加密/压缩函数
- 用友互联网战略的变与不变
- oracle11g memory_target,oracle11g MEMORY_MAX_TARGET设置成0 问题处理
- Redis内存分析工具
- 阿尔法大蛋智能机器人功能_智能机器人怎么选?阿尔法蛋大蛋2.0助力孩子新学期...
- 重庆高考计算机分数线,重庆高考历年分数线
- MOV指令在32位汇编程序和64位汇编程序下的相同与不同之处
- 『遥かに仰ぎ、丽しの』游戏初回版特典原声集 GAME SP OST(下载、中日双语歌词)...
- python抓取贴吧_python抓取百度贴吧-校花吧,网页图片
- Java团队+.NET团队==足球队+篮球队;我们能否同时培养好2个优秀的精英团队?
- CA服务器的简单搭建
- deepin系统安装成功了之后重启电脑没有deepin启动选项的简单解决办法
- 安装photoshop2022mac遇到安装失败错误代码182解决方法
- 【SpringCloud】-- SpringCloud简介
- sha加密算法介绍以及java实现sha加密算法
热门文章
- React开发(231):常见手机号邮箱的正则
- 前端学习(2915):数据绑定
- [html] 前端需要注意哪些SEO?
- 1社会心理学---感知情境
- 前端学习(2546):debugger
- 前端学习(2181):vue-router导航守卫的补充
- “约见”面试官系列之常见面试题之第七十六篇之vue-router中的路由钩子函数基本用法 (建议收藏)
- “约见”面试官系列之常见面试题之第四十八篇之各个浏览器内核(建议收藏)
- 前端学习(2087):v-on得修饰符使用案例
- 第一百三十七期:一个简单的小案例带你理解MySQL中的事务