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