显示页码

时间:2011-06-23 03:08:42

标签: c# pagination page-numbering

我想模仿这种分页的工作原理:

enter image description here

请注意当前页面如何始终在两侧显示两个页面?当您考虑到您可能在第4页并且1和3之间没有间隙或者如果您在第1页上它将向右侧显示两个以上的数字时,这似乎是很多条件代码

有人可以让我开始正确的开始吗?

3 个答案:

答案 0 :(得分:7)

以下是控制台程序的示例输出,其中包含您正在寻找的逻辑:

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);
        }
    }
}

答案 1 :(得分:0)

  1. 您知道第一页
  2. 你知道最后一页
  3. 您知道当前页面
  4. 所以

    • 如果第一个和第二个之间的页数超过2页当前,显示'...'然后两个页面最接近当前
    • else显示第一个和当前之间的所有页面
    • 重复上一次

答案 2 :(得分:0)

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'