假定分页条页码展示数为10。
1. 定义一个List<int>;
2. 总页数<11时,全部展示,将1-10添加到List;
3. 总页数>10时,取首两页(1、2), 当前页和前后各一页(page-1、 page、 page+1), 总页数1/4, 1/2, 3/4的页码(pages/4、pages/2、pages *3 /4),尾两页(pages-1、page)添加到List;
4. 将List去重并排序;
5. 按List当前项目生成分页条(由于以上项可能会计算出重复页码,所以最终结果有可能小于10)。
6. 当页码展示数小于10时,按1, page, pages, page-1, page+1, pages/2, pages /4, pages *3/4, 2, pages 的顺序添加,直到到达展示数上限;
List<int> pageno = new List<int>();
if (pages < 11)
{
for (int i = 0; i < pages; i++)
{
pageno.Add(i+1);
}
}
else
{
pageno.Add(1);
pageno.Add(2);
pageno.Add(pages / 4);
pageno.Add(page - 1);
pageno.Add(page);
pageno.Add(page + 1);
pageno.Add(pages * 3 / 4);
pageno.Add(pages / 2);
pageno.Add(pages - 1);
pageno.Add(pages);
}
pageno.Distinct();
pageno.Sort();