一个显示页码用的helper。。。
生活随笔
收集整理的這篇文章主要介紹了
一个显示页码用的helper。。。
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
沒想到這么不起眼的東西殺了我不少腦細胞……
在控制臺中測試沒發(fā)現(xiàn)啥問題,代碼風格什么的就先不管它了
?
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);}} } 參數(shù)解說:
curr - 當前頁碼
currToDO - 怎樣輸出當前頁碼
begin - 頁碼從多少開始
end - 頁碼到多少結束
beginToDo - 怎樣顯示起始頁碼
endToDo - 怎樣顯示結束頁碼
cfix - 當前頁的前后頁碼輸出多少個
cfixToDo - 當前頁前后頁碼怎樣輸出
padding - 所有沒有被涵蓋進其它參數(shù)的頁碼,如果出現(xiàn)次數(shù)超過這個參數(shù)的值,則完全省略掉
padToDo - 被省略掉的頁碼應該怎樣表現(xiàn)
sfixBegin - 從起始頁碼開始,延伸顯示多少個頁碼
pfixEnd - 到結束頁碼位置,延伸顯示多少個靠近結束位置的頁碼
sfbToDo - 起始頁碼附近的頁碼應該怎么樣表現(xiàn)
pfeToDo -結束頁碼附近的頁碼應該怎么樣表現(xiàn)
?
測試用的控制臺程序代碼:
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(); }
轉(zhuǎn)載于:https://www.cnblogs.com/NanaLich/archive/2010/07/08/page-number-generate-helper.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結
以上是生活随笔為你收集整理的一个显示页码用的helper。。。的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转]gcc生成动态库静态库
- 下一篇: 查看计算机本机IP地址,本机ip地址查询