このページングがどのように機能するかを模倣したいと思います。
現在のページが常に両側に 2 ページ表示されることに注意してください。これは、ページ 4 にいて 1 と 3 の間にギャップがない場合、またはページ 1 にいる場合は右側に 3 つ以上の数字が表示される場合を考慮に入れると、多くの条件付きコードになるようです。 .
誰かが私を正しいスタートに導くことができますか?
このページングがどのように機能するかを模倣したいと思います。
現在のページが常に両側に 2 ページ表示されることに注意してください。これは、ページ 4 にいて 1 と 3 の間にギャップがない場合、またはページ 1 にいる場合は右側に 3 つ以上の数字が表示される場合を考慮に入れると、多くの条件付きコードになるようです。 .
誰かが私を正しいスタートに導くことができますか?
探しているロジックを含むコンソール プログラムからの出力例を次に示します。
プログラム.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);
}
}
}
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'
そう