一个显示页码用的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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/423118.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端学习(142):行级标签和块级标签

块级标签&#xff1a;(block) 1、独占一行&#xff0c;不和其他元素待在同一行&#xff0c;宽度自动填满父元素宽度 2、能设置weight(宽)、height(高)属性 3、可以设置margin&#xff0c;padding属性 常见的块级标签&#xff1a; <address>&#xff0c;定义地址 &l…

【剑指offer - C++/Java】2、替换空格

学习交流加 个人qq&#xff1a; 1126137994个人微信&#xff1a; liu1126137994学习交流资源分享qq群&#xff1a; 962535112 题目链接&#xff1a; 替换空格 文章目录题目描述解题思路总结题目描述 请实现一个函数&#xff0c;将一个字符串中的每个空格替换成“%20”。例如&am…

c#保留小数点后位数的方法

c#保留小数点后位数的方法 Double dValue 95.12345; int iValue 10000; string strValue "95.12345"; string result ""; result Convert.ToDouble(dValue).ToString("0.00");//保留小数点后两位,结果为95.12 …

数据仓设计

TOC 数据仓库&#xff0c;这里采用层级的设计方式&#xff0c;设计的粒度&#xff0c;依据业务的复杂度而定&#xff1b; 这里只是介绍 数据仓库的设计&#xff0c;后续补充一下&#xff0c;具体的实现细节和使用工具&#xff1b;

【OS学习笔记】一 处理器、内存和指令

学习交流加 个人qq&#xff1a; 1126137994个人微信&#xff1a; liu1126137994学习交流资源分享qq群&#xff1a; 962535112 我们已经知道&#xff0c;处理器是一台电子计算机的核心&#xff0c;它会在振荡器脉冲的激励下&#xff0c;从内存中获取指令&#xff0c;并发起一系列…

AS3 CookBook学习整理(八)

1. AS3的事件机制 事件流机制即为捕获--目标--冒泡,分别对应event.eventPhase的值1(EventPhase.CAPTURING_PHASE)&#xff0c;2(EventPhase.AT_TARGET)&#xff0c;3(EventPhase.BUBBLING_PHASE) 假设有3个Sprite&#xff0c;分别为绿、蓝、黄(如图),层叠关系为绿色包含蓝色&am…

边缘计算+云计算

后续更新中 边缘计算云计算&#xff1a; 促进企业数字化向数智化发展概念1.以下是边缘计算的四个组织2. 边缘设备对IoT的增强作用 &#xff08;更新&#xff09;3. 边缘计算应用于IoT的四个层次4. AI在边缘设备计算领域的三种应用场景5. 云服务架构6.案例解析6.1国家电网&#…

参商

人生不相见&#xff0c;动如参与商。今夕复何夕&#xff0c;共此灯烛光。 少壮能几时&#xff0c;鬓发各已苍。访旧半为鬼&#xff0c;惊呼热中肠。 焉知二十载&#xff0c;重上君子堂。昔别君未婚&#xff0c;儿女忽成行。 怡然敬父执&#xff0c;问我来何方。问答乃未已&a…

CSS强制按比例缩小图片

<title>CSS强制按比例缩小图片</title><style>img,a img{ border:0; margin:0; padding:0; max-width:200px; width:expression(this.width>200?"200px":this.width); max-height:200px; height:expression(this.height>200?"200px…

【剑指offer - C++/Java】3、从尾到头打印链表

学习交流加 个人qq&#xff1a; 1126137994个人微信&#xff1a; liu1126137994学习交流资源分享qq群&#xff1a; 962535112 牛客网题目链接&#xff1a; 从尾到头打印链表 文章目录题目描述1、递归解法1.1、 递归解法一java代码&#xff1a;C代码分析&#xff1a;1.2 递归解法…

网络协议之http和tcp思维导图

http协议和tcp协议之前学的整理一部分&#xff0c;后续更新

Oracle 10g Audit(审计) --- 记录登录用户在Oracle中的所有操作(转)

由于项目平台管理的需要&#xff0c;最近在研究Oracle 10G的审计功能&#xff0c;以便记录和跟踪用户在Oracle数据库系统中的所有操作行为&#xff0c;进而提高Oracle的安全性。现在把审计功能的配置步骤分享出来&#xff0c;供大家参考&#xff1a; 1、以DBA登录Oracle # su -…

【剑指offer - C++/Java】4、重建二叉树

牛客网题目链接&#xff1a;重建二叉树 文章目录0 题目描述&#xff1a;1、题目分析2、代码2.1、java代码2.2 C代码3、总结0 题目描述&#xff1a; 输入某二叉树的前序遍历和中序遍历的结果&#xff0c;请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字…

Windows下Android开发环境 搭建

1、 下载Android SDK &#xff08;1&#xff09;官网下载解压后即可用。 在http://androidappdocs.appspot.com/sdk/index.html 下选择 合适自己的平台下载&#xff0c;下载后解压 运行 【SDK Setup.exe】 出现在线安装包。 会出现“Failed to fetch URL https://dl-ssl.google…

【OS学习笔记】二 汇编语言和汇编软件

学习交流加 个人qq&#xff1a; 1126137994个人微信&#xff1a; liu1126137994学习交流资源分享qq群&#xff1a; 962535112 上一篇文章讲解了处理器&#xff0c;内存&#xff0c;和指令。学习了Intel 8086处理器的相关知识&#xff0c;如Intel通用寄存器的作用&#xff0c;程…

【软件开发底层知识修炼】一 深入浅出处理器之一 微处理器与微控制器

学习交流加&#xff08;可免费帮忙下载CSDN资源&#xff09;&#xff1a;个人微信&#xff1a; liu1126137994学习交流资源分享qq群1&#xff08;已满&#xff09;&#xff1a; 962535112学习交流资源分享qq群2&#xff1a; 780902027 深入浅出处理器这几篇文章可能你觉得对软件…

WINCE6 同时支持简繁体

最近两星期在玩WINCE6&#xff0c;因产品需要&#xff0c;应用软件需支持简繁体&#xff0c;显示其中一种很好办&#xff0c;只需要加入相应的字库。如加入简体字库&#xff1a;CEBASE->International->Locale Specific Support->Chinese(Simplified)&#xff0c;选择…

ASP.NET 2.0中将 GridView 导出到 Excel 文件中

下面代码实现将 GridView 导出到 Excel文件中。 值得注意的是VerifyRenderingInServerForm重载方法&#xff1a;MSDN上的 VerifyRenderingInServerForm 方法的描述&#xff1a;  必须位于 <form runatserver> 标记中的控件可以在呈现之前调用此方法&#xff0c;以便在控…

【软件开发底层知识修炼】二 深入浅出处理器之二 中断的概念与意义

学习交流加 个人qq&#xff1a; 1126137994个人微信&#xff1a; liu1126137994学习交流资源分享qq群&#xff1a; 962535112 上一篇文章我们学习了微处理器与微控制器的区别。点击链接查看上一篇文章的内容&#xff1a;微处理器与微控制器 本篇文章我们学习中断的概念与意义。…