2

このページングがどのように機能するかを模倣したいと思います。

ここに画像の説明を入力

現在のページが常に両側に 2 ページ表示されることに注意してください。これは、ページ 4 にいて 1 と 3 の間にギャップがない場合、またはページ 1 にいる場合は右側に 3 つ以上の数字が表示される場合を考慮に入れると、多くの条件付きコードになるようです。 .

誰かが私を正しいスタートに導くことができますか?

4

3 に答える 3

7

探しているロジックを含むコンソール プログラムからの出力例を次に示します。

プログラム.exe 1

1 2 3...100

プログラム.exe 2

1 2 3 4...100

プログラム.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);
        }
    }
}
于 2011-06-23T03:25:02.333 に答える
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'
于 2011-06-23T03:22:39.450 に答える
-1
  1. あなたは最初のページを知っています
  2. あなたは最後のページを知っています
  3. あなたは現在のページを知っています

そう

  • 最初のページと現在のページの間に 2 ページ以上ある場合は、'...' を表示し、次に現在のページに最も近い 2 ページを表示します
  • それ以外の場合は、最初と現在の間のすべてのページを表示します
  • 最後まで繰り返す
于 2011-06-23T03:18:33.353 に答える