我想模仿这个分页是如何工作的:显示页码
注意如何在当前页面始终显示在两边的两个页面?看起来好像有很多条件代码,当你考虑你可能在第4页的情况,并且在1和3之间没有差距,或者如果你在第1页,它会在右边显示两个以上的数字。
有人能让我走向正确的开始吗?
我想模仿这个分页是如何工作的:显示页码
注意如何在当前页面始终显示在两边的两个页面?看起来好像有很多条件代码,当你考虑你可能在第4页的情况,并且在1和3之间没有差距,或者如果你在第1页,它会在右边显示两个以上的数字。
有人能让我走向正确的开始吗?
这里第一和第二电流
的Program.exe 1
1 2 3 ... 100
Program.exe 2
1 2 3 4 ... 100
的Program.exe 5
1 ... 3 4 5 6 7 ... 100
using System;
class Program
{
static void Main(string[] args)
{
// usage program.exe page#
// page# between 1 and 100
int minPage = 1;
int maxPage = 100;
int currentPage = int.Parse(args[0]);
// output nice pagination
// always have a group of 5
int minRange = Math.Max(minPage, currentPage-2);
int maxRange = Math.Min(maxPage, currentPage+2);
if (minRange != minPage)
{
Console.Write(minPage);
Console.Write("...");
}
for (int i = minRange; i <= maxRange; i++)
{
Console.Write(i);
if (i != maxRange) Console.Write(" ");
}
if (maxRange != maxPage)
{
Console.Write("...");
Console.Write(maxPage);
}
}
}
所以
int n = 34 //max page
int current = 5 //current page
if(current > 1)
//Dislpay 'prev'
if (current < 5){
for(int i=1; i<current; ++i)
//Display i
}
else {
//Display 1 followed by ...
for(int i=current-2; i<current; ++i)
//Display i
}
//Display current in red
if (current > n-4) {
for(int i = current+1; i<=n; ++i)
//Display i
}
else {
for(int i=current+1; i<current+3; ++i)
//Display i
//Display ... folowed by n
}
if (current < n)
//Display 'next'
你Math.Max的使用/最小是非常聪明。 –
我同意!我发现这非常有用,谢谢。 –
这很好,真的很好。然而,只是想要注意的是,如果你在第4页上,你将有一个2范围,因此将呈现'1 ... 2 3 4'等等。需要在'minRange!= minPage'就在'if(minRange-1!= minPage)'的elipses之上 –