Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 显示页码_C#_Pagination_Page Numbering - Fatal编程技术网

C# 显示页码

C# 显示页码,c#,pagination,page-numbering,C#,Pagination,Page Numbering,我想模拟一下这种分页的工作方式: 注意当前页面如何始终在两侧显示两个页面?如果你在第4页,并且1和3之间没有间隙,或者如果你在第1页,它会在右边显示两个以上的数字,那么这似乎是很多条件代码 有人能帮我找到正确的开始吗 你知道第一页吗 你知道最后一页吗 你知道当前页面吗 所以 如果第一页和当前页之间有超过2页,则显示“…”,然后显示最接近当前页的两页 否则显示第一页和当前页之间的所有页面 重复到最后 int n=34//max page int current=5//当前页面 如果(当前>1)

我想模拟一下这种分页的工作方式:

注意当前页面如何始终在两侧显示两个页面?如果你在第4页,并且1和3之间没有间隙,或者如果你在第1页,它会在右边显示两个以上的数字,那么这似乎是很多条件代码

有人能帮我找到正确的开始吗

  • 你知道第一页吗
  • 你知道最后一页吗
  • 你知道当前页面吗
  • 所以

    • 如果第一页和当前页之间有超过2页,则显示“…”,然后显示最接近当前页的两页
    • 否则显示第一页和当前页之间的所有页面
    • 重复到最后
    int n=34//max page
    int current=5//当前页面
    如果(当前>1)
    //Dislpay“prev”
    如果(电流<5){
    
    对于(int i=1;i,这里是控制台程序的示例输出,其中包含您正在寻找的逻辑:

    Program.exe 1

    123100

    Program.exe 2

    1234…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);
            }
        }
    }
    
    使用系统;
    班级计划
    {
    静态void Main(字符串[]参数)
    {
    //使用程序.exe页面#
    //第#页介于1和100之间
    int minPage=1;
    int maxPage=100;
    int currentPage=int.Parse(args[0]);
    //输出分页
    //总是有一个5人的小组
    int minRange=Math.Max(最小页面,当前页面-2);
    int maxRange=Math.Min(maxPage,currentPage+2);
    如果(minRange!=minPage)
    {
    Console.Write(minPage);
    控制台。写(“…”);
    }
    
    对于(int i=minRange;i)你对Math.Max/Min的使用非常聪明。这很好,非常好。但是我只想注意,如果你在第4页,你的minRange将为2,因此将呈现
    1…2 3 4
    等。在
    minRange!=minPage
    的块中需要另一个条件行,正好在省略号上方,
    if(minRange-1!=minPage)
    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);
            }
        }
    }