应用截图如下:

分页事例 比较好的
    





            
OPS.Lib - ASP.Net快速分页:PagedLinkBuilder

 

只需提供当前页数和总页数就可以创建出如上的分页链接!

先看下PagedLinkBuilder的使用:

 先引用OPS.Core.dll到项目中:下载地址:http://lib.ops.cc/dowload/ops.core

01 using OPS.Web.UI;
02 public class Page
03 {
04     public string GetPagerHtml()
05     {
06         int currentPageIndex = int.Parse(Request["page"]); int pageCount = 50;
07         //假设有50页          
08         PagedLinkBuilder p = new PagedLinkBuilder(currentPageIndex, pageCount);
09         //以下属性均为可选   
10         p.LinkCount = 5;                    //链接个数      
11         p.EnableInput = true;               //是否使用输入页码框  
12         p.NextPageText = "下一页>>";
13         p.PreviousPageText = "<<上一页";
14         //返回生成的分页链接Html     
15         return p.ToString("?domain=ops.cc&page={0}");
16     }
17 }

 

 

你可以打开浏览器查看输出的HTML代码

PagedLinkBuilder源代码如下:

001 /*
002  * PagedLinksBuilder 分页链接构造器
003  * Copyright 2010 OPS,All right reseved!
004  * Newmin(ops.cc)  @  2010/11/18
005  */
006 namespace OPS.Web.UI
007 {
008     using System;
009     using System.Text;
010     using System.Text.RegularExpressions;
011   
012     /// <summary>
013     /// 分页链接创建器(url:www.ops.cc)
014     /// </summary>
015     public class PagedLinkBuilder:IFormattable
016     {
017         public PagedLinkBuilder() { }
018         public PagedLinkBuilder(int currentPageIndex, int pageCount)
019         {
020             CurrentPageIndex = currentPageIndex;
021             PageCount = pageCount;
022         }
023         /// <summary>
024         /// 当前页面索引
025         /// </summary>
026         public int CurrentPageIndex { get; set; }
027         /// <summary>
028         /// 页面总数
029         /// </summary>
030         public int PageCount { get; set; }
031         /// <summary>
032         /// 上一页文字
033         /// </summary>
034         public string PreviousPageText { get; set; }
035         /// <summary>
036         /// 下一页文字
037         /// </summary>
038         public string NextPageText { get; set; }
039         /// <summary>
040         /// 链接长度,创建多少个跳页链接
041         /// </summary>
042         public int? LinkCount { get; set; }
043         /// <summary>
044         /// 是否允许输入页码调页
045         /// </summary>
046         public bool EnableInput { get; set; }
047   
048         /// <summary>
049         /// 输入分页链接HTML代码
050         /// </summary>
051         /// <param name="format">例如:?domain=ops.cc&page={0},{0}将会被解析成页码</param>
052         /// <param name="formatProvider"></param>
053         /// <returns></returns>
054         public string ToString(string format, IFormatProvider formatProvider)
055         {           
056             //创建匹配{page}的Regex对象
057             Regex reg=new Regex("{(\\d)+}");
058             //如果不包括匹配则抛出异常
059             if(!reg.IsMatch(format)) throw new ArgumentException("表达区中页数需要使用{[1,2,3....]}表示");
060             //计算上一页和下一页
061             int pindex=CurrentPageIndex<=1?1:CurrentPageIndex-1;
062             int nindex=CurrentPageIndex >= PageCount ? PageCount:CurrentPageIndex+1;
063   
064             StringBuilder sb = new StringBuilder();
065             sb.Append("<a class=\"previous\" href=\"").Append(pindex==1?"##":reg.Replace(format,pindex.ToString()))
066                 .Append("\">").Append(PreviousPageText??"<<上一页").Append("</a>");
067   
068             //起始页:CurrentPageIndex / 10 * 10+1
069             //结束页:(CurrentPageIndex%10==0?CurrentPageIndex-1: CurrentPageIndex) / 10 * 10
070             //当前页数能整除10的时候需要减去10页,否则不能选中
071   
072             int c = LinkCount ?? 10;
073             for (int i = 1, j = CurrentPageIndex /c * c+1; i<=c; 
074                     i++, j =(CurrentPageIndex%c==0?CurrentPageIndex-1: CurrentPageIndex) /c * c+ i)
075             {
076                 sb.Append("<a href=\"").Append(j==CurrentPageIndex?"#\" class=\"current":reg.Replace(format,j.ToString())).Append("\">")
077                     .Append(j.ToString()).Append("</a>");
078             }
079             //使用输入页码框
080             if (EnableInput)
081                 sb.Append("<input type=\"text\" size=\"3\"/><input type=\"button\" onclick=\"var _page=parseInt(this.previousSibling.value);if(_page)location.href='")
082                     .Append(reg.Replace(format,"__page__")).Append("'.replace('__page__',_page);\" value=\"Go\"/>");
083   
084             sb.Append("<a class=\"next\" href=\"").Append(nindex == PageCount ? "##" : reg.Replace(format, nindex.ToString()))
085                 .Append("\">").Append(NextPageText ?? "下一页>></a>");
086             return sb.ToString();
087         }
088         /// <summary>
089         /// 输入分页链接HTML代码
090         /// </summary>
091         /// <param name="format">例如:?domain=ops.cc&page={0},{0}将会被解析成页码</param>
092         public string ToString(string format)
093         {
094             return ToString(format, null);
095         }
096         public override string ToString()
097         {
098             return ToString("?pageIndex={0}");
099         }
100     }
101 }

 

 

转载请注明出处:http://lib.ops.cc

http://www.cnblogs.com/anet/archive/2010/11/18/ops-lib-Paged-Link-Builder.html

相关文章:

  • 2021-08-15
  • 2022-03-04
  • 2021-11-05
  • 2021-09-16
  • 2022-12-23
  • 2021-10-03
  • 2022-02-24
猜你喜欢
  • 2021-10-26
  • 2021-11-01
  • 2022-01-30
  • 2021-06-12
  • 2021-06-07
  • 2021-10-13
  • 2021-08-31
相关资源
相似解决方案