在做網(wǎng)站沒(méi)用 JS UI控件時(shí) 很實(shí)用
用法:
var ps=new PageString(); /*可選參數(shù)*/ ps.SetIsEnglish = true;// 是否是英文 (默認(rèn):false) ps.SetIsShowText = true;//是否顯示分頁(yè)文字 (默認(rèn):true) //ps.TextFormat="" (默認(rèn)值:《span class=/"pagetext/"》《strong》總共《/strong》:{0} 條 《strong》當(dāng)前《/strong》:{1}/{2}《/span》) //ps.SetPageIndexName Request["pageIndex"](默認(rèn)值:"pageIndex") ps.SetIsAjax = false;// (默認(rèn)值:"false") /*函數(shù)參數(shù)*/ int total = 10000; int pageSize = 10; int pageIndex = Convert.ToInt32(Request["pageIndex"]); var page = ps.ToString(total, pageSize, pageIndex, "/UI/PageStringTest.aspx?"); //獲取 page html 輸出 Response.Write(page);
效果:

代碼:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Text.RegularExPRessions;namespace SyntacticSugar{ /// <summary> /// ** 描述:分頁(yè)類(lèi) /// ** 創(chuàng)始時(shí)間:2015-5-29 /// ** 修改時(shí)間:- /// ** 作者:sunkaixuan public class PageString { /// <summary> /// 是否是英文 (默認(rèn):false) /// </summary> public bool SetIsEnglish { get; set; } /// <summary> /// 是否顯示分頁(yè)文字(默認(rèn):true) /// </summary> public bool SetIsShowText { get; set; } /// <summary> /// 樣式 (默認(rèn):"pagination") /// </summary> public string SetClassName { get; set; } /// <summary> /// 分頁(yè)參數(shù)名 (默認(rèn):"pageIndex") /// </summary> public string SetPageIndexName { get; set; } /// <summary> /// 是否是異步 同步 href='' 異步 onclick=ajaxPage() (默認(rèn):false) /// </summary> public bool SetIsAjax { get; set; } /// <summary> /// 自定義文字 /// string.Format("{0}{1}{2}","總記錄數(shù)","當(dāng)前頁(yè)數(shù)","總頁(yè)數(shù)") /// 默認(rèn)值:《span class=/"pagetext/"》《strong》總共《/strong》:{0} 條 《strong》當(dāng)前《/strong》:{1}/{2}《/span》 /// </summary> public string SetTextFormat { get; set; } public PageString() { SetIsEnglish = false; SetIsShowText = true; SetTextFormat = "<span class=/"pagetext/"><strong>總共</strong>:{0} 條 <strong>當(dāng)前</strong>:{1}/{2}</span> "; SetClassName = "pagination"; SetPageIndexName = "pageIndex"; SetIsAjax = false; } /*免費(fèi)的樣式 .pagination .click {cursor:pointer} .pagination a{text-decoration: none;border: 1px solid #AAE;color: #15B;font-size: 13px;border-radius: 2px;} .pagination span{ color:#666;font-size:13px;display: inline-block;border: 1px solid #ccc;padding: 0.2em 0.6em;} .pagination span.pagetext{ border:none} .pagination a:hover{background: #26B;color: #fff;} .pagination a{display: inline-block;padding: 0.2em 0.6em;} .pagination .page_current{background: #26B;color: #fff;border: 1px solid #AAE;margin-right: 5px;} .pagination{margin-top: 20px;} .pagination .current.prev, .pagination .current.next{color: #999;border-color: #999;background: #fff;} * */ /// <summary> /// 分頁(yè)算法<一>共20頁(yè) 首頁(yè) 上一頁(yè) 1 2 3 4 5 6 7 8 9 10 下一頁(yè) 末頁(yè) /// </summary> /// <param name="total">總記錄數(shù)</param> /// <param name="pageSize">每頁(yè)記錄數(shù)</param> /// <param name="pageIndex">當(dāng)前頁(yè)數(shù)</param> /// <param name="query_string">Url參數(shù)</param> /// <returns></returns> public string ToString(int total, int pageSize, int pageIndex, string query_string) { int allpage = 0; int next = 0; int pre = 0; int startcount = 0; int endcount = 0; StringBuilder pagestr = new StringBuilder(); pageIndex = pageIndex == 0 ? 1 : pageIndex; pagestr.AppendFormat("<div class=/"{0}/" >", SetClassName); if (pageIndex < 1) { pageIndex = 1; } //計(jì)算總頁(yè)數(shù) if (pageSize != 0) { allpage = (total / pageSize); allpage = ((total % pageSize) != 0 ? allpage + 1 : allpage); allpage = (allpage == 0 ? 1 : allpage); } next = pageIndex + 1; pre = pageIndex - 1; startcount = (pageIndex + 5) > allpage ? allpage - 9 : pageIndex - 4;//中間頁(yè)起始序號(hào) //中間頁(yè)終止序號(hào) endcount = pageIndex < 5 ? 10 : pageIndex + 5; if (startcount < 1) { startcount = 1; } //為了避免輸出的時(shí)候產(chǎn)生負(fù)數(shù),設(shè)置如果小于1就從序號(hào)1開(kāi)始 if (allpage < endcount) { endcount = allpage; }//頁(yè)碼+5的可能性就會(huì)產(chǎn)生最終輸出序號(hào)大于總頁(yè)碼,那么就要將其控制在頁(yè)碼數(shù)之內(nèi) bool isFirst = pageIndex == 1; bool isLast = pageIndex == allpage; if (SetIsShowText) pagestr.AppendFormat(SetTextFormat, total, pageIndex, allpage); if (isFirst) { pagestr.Append("<span>首頁(yè)</span> <span>上一頁(yè)</span>"); } else { pagestr.AppendFormat("<a href=/"{0}pageIndex=1/">首頁(yè)</a> <a href=/"{0}pageIndex={1}/">上一頁(yè)</a>", query_string, pre); } //中間頁(yè)處理,這個(gè)增加時(shí)間復(fù)雜度,減小空間復(fù)雜度 for (int i = startcount; i <= endcount; i++) { bool isCurent = pageIndex == i; if (isCurent) { pagestr.Append(" <a class=/"page_current/">" + i + "</a>"); } else { pagestr.Append(" <a href=/"" + query_string + "pageIndex=" + i + "/">" + i + "</a>"); } } if (isLast) { pagestr.Append("<span>下一頁(yè)</span> <span>末頁(yè)</span>"); } else { pagestr.Append(" <a href=/"" + query_string + "pageIndex=" + next + "/">下一頁(yè)</a> <a href=/"" + query_string + "pageIndex=" + allpage + "/">末頁(yè)</a>"); } pagestr.AppendFormat("</div>"); return ConversionData(pagestr.ToString()); } private string ConversionData(string page) { if (SetIsEnglish) { page= page.Replace("上一頁(yè)", "Previous").Replace("下一頁(yè)", "Next").Replace("總共", "total").Replace("當(dāng)前", "Current").Replace("條", "records").Replace("首頁(yè)", "First").Replace("末頁(yè)", "Last"); } if (SetIsAjax) { var matches = Regex.Matches(page, @"href/="".*?""",RegexOptions.Singleline); if (matches != null && matches.Count > 0) { foreach (Match m in matches) { page = page.Replace(m.Value, string.Format("class=/"click/" onclick=/"ajaxPage('{0}')/"", Regex.Match(m.Value, string.Format(@"{0}/=(/d+)", SetPageIndexName)).Groups[1].Value)); } } } return page; } }}
|
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注