翻页导航条页码计算方法
生活随笔
收集整理的這篇文章主要介紹了
翻页导航条页码计算方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在開發搜索引擎等應用時,提供一個翻頁導航條是必須的。我看過網上一些相關的代碼,搞得很復雜。暈~~~ 其實其數學計算公式非常簡單,本文提供兩種最常用的算法。
翻頁式
樣式如下。每次顯示10個頁碼,并提供"前十"、"后十"翻頁。
[1] 2 3 4 5 6 7 8 9 10 下十頁 末頁
1 2 3 4 5 6 [7] 8 9 10 下十頁 末頁
1 2 3 4 5 6 7 8 9 [10] 下十頁 末頁
首頁 前十頁 [11] 12 13 14 15 16 17 18 19 20 下十頁 末頁
首頁 前十頁 11 12 13 14 15 [16] 17 18 19 20 下十頁 末頁
計算公式:(當前頁序號最小值為1)
int x = 當前頁序號 / 10;
if (當前頁序號 % 10 == 0) --x;
int startPage = (x * 10) + 1;
int endPage = Math.Min(總頁數, startPage + 9);
生成翻頁式導航代碼演示:
private string GetNavBarHtml(string s, int pageIndex, int pageCount)
{
????// 計算顯示頁碼
????int x = pageIndex / 10;
????if (pageIndex % 10 == 0) --x;
????int startPage = (x * 10) + 1;
????int endPage = Math.Min(pageCount, startPage + 9);
????// 生成換頁代碼
????System.Text.StringBuilder sb = new StringBuilder();
????string url = "<a href = \"search.aspx?s={1}&page={2}\">{0}</a>";
????if (startPage > 1)
????{
??????sb.Append(String.Format(url, "首頁", s, 1));
??????sb.Append(" ");
??????sb.Append(String.Format(url, "前十頁", s, startPage - 1));
??????sb.Append(" ");
????}
????
????for (int i = startPage; i <= endPage; i++)
????{
??????if (i != pageIndex)
????????sb.Append(String.Format(url, i, s, i));
??????else
????????sb.Append(string.Format("[{0}]", i));
??????
??????sb.Append(" ");
????}
????if (pageCount > endPage)
????{
??????sb.Append(String.Format(url, "后十頁", s, endPage + 1));
??????sb.Append(" ");
??????sb.Append(String.Format(url, "末頁", s, pageCount));
????}
????
????return sb.ToString();
}
滾動式
樣式如下。將當前頁碼放在中間,滾動兩端頁碼。
[1] 2 3 4 5 6 7 8 9 10 末頁
1 2 3 4 [5] 6 7 8 9 10 末頁
首頁 2 3 4 5 [6] 7 8 9 10 11 末頁
首頁 5 6 7 8 [9] 10 11 12 13 14 末頁
首頁 8 9 10 11 [12] 13 14 15 16 17 末頁
計算公式:(當前頁序號最小值為1)
int startPage = Math.Max(當前頁序號 - 4, 1);
int endPage = Math.Min(頁總數, startPage + 9);
生成滾動式導航代碼演示:
private string GetNavBarHtml(string s, int pageIndex, int pageCount)
{
????// 計算顯示頁碼
????int startPage = Math.Max(pageIndex - 4, 1);
????int endPage = Math.Min(pageCount, startPage + 9);
????// 生成換頁代碼
????System.Text.StringBuilder sb = new StringBuilder();
????string url = "<a href = \"search.aspx?s={1}&page={2}\">{0}</a>";
????if (startPage > 1)
????{
??????sb.Append(String.Format(url, "首頁", s, 1));
??????sb.Append(" ");
????}
????
????for (int i = startPage; i <= endPage; i++)
????{
??????if (i != pageIndex)
????????sb.Append(String.Format(url, i, s, i));
??????else
????????sb.Append(string.Format("[{0}]", i));
??????
??????sb.Append(" ");
????}
????if (pageCount > endPage)
????{
??????sb.Append(String.Format(url, "末頁", s, pageCount));
????}
????
????return sb.ToString();
}
翻頁式
樣式如下。每次顯示10個頁碼,并提供"前十"、"后十"翻頁。
[1] 2 3 4 5 6 7 8 9 10 下十頁 末頁
1 2 3 4 5 6 [7] 8 9 10 下十頁 末頁
1 2 3 4 5 6 7 8 9 [10] 下十頁 末頁
首頁 前十頁 [11] 12 13 14 15 16 17 18 19 20 下十頁 末頁
首頁 前十頁 11 12 13 14 15 [16] 17 18 19 20 下十頁 末頁
計算公式:(當前頁序號最小值為1)
int x = 當前頁序號 / 10;
if (當前頁序號 % 10 == 0) --x;
int startPage = (x * 10) + 1;
int endPage = Math.Min(總頁數, startPage + 9);
生成翻頁式導航代碼演示:
private string GetNavBarHtml(string s, int pageIndex, int pageCount)
{
????// 計算顯示頁碼
????int x = pageIndex / 10;
????if (pageIndex % 10 == 0) --x;
????int startPage = (x * 10) + 1;
????int endPage = Math.Min(pageCount, startPage + 9);
????// 生成換頁代碼
????System.Text.StringBuilder sb = new StringBuilder();
????string url = "<a href = \"search.aspx?s={1}&page={2}\">{0}</a>";
????if (startPage > 1)
????{
??????sb.Append(String.Format(url, "首頁", s, 1));
??????sb.Append(" ");
??????sb.Append(String.Format(url, "前十頁", s, startPage - 1));
??????sb.Append(" ");
????}
????
????for (int i = startPage; i <= endPage; i++)
????{
??????if (i != pageIndex)
????????sb.Append(String.Format(url, i, s, i));
??????else
????????sb.Append(string.Format("[{0}]", i));
??????
??????sb.Append(" ");
????}
????if (pageCount > endPage)
????{
??????sb.Append(String.Format(url, "后十頁", s, endPage + 1));
??????sb.Append(" ");
??????sb.Append(String.Format(url, "末頁", s, pageCount));
????}
????
????return sb.ToString();
}
滾動式
樣式如下。將當前頁碼放在中間,滾動兩端頁碼。
[1] 2 3 4 5 6 7 8 9 10 末頁
1 2 3 4 [5] 6 7 8 9 10 末頁
首頁 2 3 4 5 [6] 7 8 9 10 11 末頁
首頁 5 6 7 8 [9] 10 11 12 13 14 末頁
首頁 8 9 10 11 [12] 13 14 15 16 17 末頁
計算公式:(當前頁序號最小值為1)
int startPage = Math.Max(當前頁序號 - 4, 1);
int endPage = Math.Min(頁總數, startPage + 9);
生成滾動式導航代碼演示:
private string GetNavBarHtml(string s, int pageIndex, int pageCount)
{
????// 計算顯示頁碼
????int startPage = Math.Max(pageIndex - 4, 1);
????int endPage = Math.Min(pageCount, startPage + 9);
????// 生成換頁代碼
????System.Text.StringBuilder sb = new StringBuilder();
????string url = "<a href = \"search.aspx?s={1}&page={2}\">{0}</a>";
????if (startPage > 1)
????{
??????sb.Append(String.Format(url, "首頁", s, 1));
??????sb.Append(" ");
????}
????
????for (int i = startPage; i <= endPage; i++)
????{
??????if (i != pageIndex)
????????sb.Append(String.Format(url, i, s, i));
??????else
????????sb.Append(string.Format("[{0}]", i));
??????
??????sb.Append(" ");
????}
????if (pageCount > endPage)
????{
??????sb.Append(String.Format(url, "末頁", s, pageCount));
????}
????
????return sb.ToString();
}
轉載于:https://www.cnblogs.com/0000/archive/2009/12/08/1619060.html
總結
以上是生活随笔為你收集整理的翻页导航条页码计算方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 泰拉瑞亚丛林神庙怎么进?
- 下一篇: 转_前端开发技术概要