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