1 /// <summary> 2 /// 分頁標籤字串產生 3 /// </summary> 4 /// <param name="pageNum">頁碼</param> 5 /// <param name="pageCount">每頁資訊數</param> 6 /// <param name="amount">資訊總數</param> 7 /// <param name="url">頁面URL(會在後面拼接?pn=頁碼)</param> 8 /// <returns></returns> 9 public static string PageTagString(int pageNum, int pageCount, int amount, string url)10 {11 StringBuilder str = new StringBuilder();12 string connStr = string.Empty;13 if (amount > pageCount)14 {15 if (url.IndexOf("pn=") > 0)16 {17 if (url.IndexOf("&", url.IndexOf("pn=")) > 0)18 {19 string tmp = url.Substring(url.IndexOf("pn="), url.IndexOf("&", url.IndexOf("pn=")) - url.IndexOf("pn=") + 1);20 url = url.Replace(tmp, "");21 }22 else23 {24 string tmp = url.Substring(url.IndexOf("pn=") - 1);25 url = url.Replace(tmp, "");26 }27 }28 29 if (url.IndexOf('?') > 0)30 connStr = "&";31 else32 connStr = "?";33 int maxPn = amount / pageCount;34 if (amount % pageCount > 0) maxPn++;35 int prevPn = pageNum - 1;36 if (prevPn <= 0) prevPn = 1;37 int nextPn = pageNum + 1;38 if (nextPn > maxPn) nextPn = maxPn;39 40 if (pageNum > 3 && maxPn > 5)41 {42 str.Append("<a href=\"" + url + connStr + "pn=1\">首頁</a>");43 str.Append("<a href=\"" + url + connStr + "pn=" + (pageNum - 1 < 1 ? 1 : pageNum - 1) + "\">上一頁</a>");44 str.Append("...");45 }46 else if (pageNum > 1)47 {48 str.Append("<a href=\"" + url + connStr + "pn=" + (pageNum - 1 < 1 ? 1 : pageNum - 1) + "\">上一頁</a>");49 }50 51 if (pageNum > 3)52 {53 for (int i = pageNum - 2; i <= (pageNum + 2 > maxPn ? maxPn : pageNum + 2); i++)54 {55 if (i == pageNum)56 {57 str.Append("<span>" + i + "</span>");58 }59 else60 {61 str.Append("<a href=\"" + url + connStr + "pn=" + i + "\">" + i + "</a>");62 }63 }64 }65 else66 {67 for (int i = 1; i <= (maxPn < 5 ? maxPn : 5); i++)68 {69 if (i == pageNum)70 {71 str.Append("<span>" + i + "</span>");72 }73 else74 {75 str.Append("<a href=\"" + url + connStr + "pn=" + i + "\">" + i + "</a>");76 }77 }78 }79 if (maxPn - pageNum > 2 && maxPn > 5)80 {81 str.Append("...");82 str.Append("<a href=\"" + url + connStr + "pn=" + (pageNum + 1 > maxPn ? pageNum : pageNum + 1) + "\">下一頁</a>");83 str.Append("<a href=\"" + url + connStr + "pn=" + maxPn + "\">末頁</a>");84 }85 else if (pageNum < maxPn)86 {87 str.Append("<a href=\"" + url + connStr + "pn=" + (pageNum + 1 > maxPn ? pageNum : pageNum + 1) + "\">下一頁</a>");88 }89 }90 return str.ToString();91 }