重写的一个带分页的repeater

 一. 重写repeater 增加分页的功能 

效果图:

 

 

  

直接贴代码,如果觉得repeater不好的话,把分页的部分提出来:

代码
using  System;
using  System.Collections.Generic;
using  System.ComponentModel;
using  System.Text;

namespace  Ncuhome.Blog.Controls
{
    
public   class  RepeaterPaged : System.Web.UI.WebControls.Repeater
    {
        
public  RepeaterPaged()
        {

        }
        
private   string  _PageLocation;
        
///   <summary>
        
///  分页码的显示地方
        
///  Top 顶端
        
///  End 底端
        
///  TopandEnd 上面下面都有
        
///   </summary>
        [DefaultValue( " End " )]
        
public   string  PageLocation
        {
            
get  {  return  _PageLocation; }
            
set  {  this ._PageLocation  =  value; }
        }
        
private   string  _UrlFormat;
        
///   <summary>
        
///  地址 example"more.aspx?id=1&"
        
///   </summary>
         public   string  UrlFormat
        {
            
get  {  return  _UrlFormat; }
            
set  { _UrlFormat  =  value; }
        }
        
private   long  _Count;
        
///   <summary>
        
///  总数
        
///   </summary>
         public   long  Count
        {
            
get  {  return  _Count; }
            
set  { _Count  =  value; }
        }
        
private   long  _Length;
        
///   <summary>
        
///  每页显示条数
        
///   </summary>
         public   long  Length
        {
            
get  {  return  _Length; }
            
set  { _Length  =  value; }
        }


        
protected   override   void  Render(System.Web.UI.HtmlTextWriter writer)
        {
            
int  PageIndex  =   1 ;
            
if  ( string .IsNullOrEmpty(Context.Request.QueryString[ " PageIndex " ]))
            {
                PageIndex 
=   1 ;
            }
            
else
            {
                
try
                {
                    PageIndex 
=  Convert.ToInt32(Context.Request.QueryString[ " PageIndex " ].ToString());
                }
                
catch
                {
                    PageIndex 
=   1 ;
                }
            }
            
int  PageCount  =   1 ;
            
if  ( this .Count  %   this .Length  ==   0L )
                PageCount 
=  Convert.ToInt32( this .Count  /   this .Length);
            
else
                PageCount 
=  Convert.ToInt32( this .Count  /   this .Length)  +   1 ;


            
string  PageStr  =  GetPaged( this .UrlFormat, PageIndex, PageCount);
            
if  ( this .PageLocation  ==   " Top " )
            {
                writer.Write(PageStr);
                
base .Render(writer);
            }
            
else   if  ( this .PageLocation  ==   " End " )
            {
                
base .Render(writer);
                writer.Write(PageStr);
            }
            
else   if  ( this .PageLocation  ==   " TopandEnd " )
            {
                writer.Write(PageStr);
                
base .Render(writer);
                writer.Write(PageStr);
            }
            
else
            {
                
base .Render(writer);
                writer.Write(PageStr);
            }

        }

        
private   static   string  GetPaged( string  _UrlFormat,  int  _PageIndex,  int  _PageCount)
        {

            
int  pageCount  =  _PageCount; // 总的页数
             int  page  =  _PageIndex; // 当前页号
             string  UrlFormat  =  _UrlFormat  +   " PageIndex= " ; // url地址

            StringBuilder HtmlString 
=   new  StringBuilder();
            
#region  分页功能

            HtmlString.Append(
"" ); // 添加css连接
             if  (pageCount  >   0 )
            {
                HtmlString.Append(
" <div class=\ " page\ " > " );
                HtmlString.Append(
" <ul> " );
                HtmlString.Append(
" <li class=\ " long \ " ><a href= "   +  UrlFormat  +   " 1>首页</a></li> " );
                
if  (page  >   1 )
                {
                    HtmlString.Append(
" <li  class=\ " long \ " ><a href=' "   +  UrlFormat  +   ""   +  Convert.ToString(page  -   1 +   " '>上一页</a></li> " );
                }
                
int  i  =   1 ;
                
if  (pageCount  <=   10 )
                {
                    
for  (; i  <=  pageCount; i ++ )
                    {
                        
if  (i  ==  page)
                        {
                            HtmlString.Append(
" <li><font color=red><strong> "   +  i.ToString()  +   " </strong></font></li> " );
                        }
                        
else
                        {
                            HtmlString.Append(
" <li><a href= "   +  UrlFormat  +   ""   +  i.ToString()  +   " > "   +  i.ToString()  +   " </a></li> " );
                        }
                    }
                }
                
else
                {
                    
if  (page  <=   3 )
                    {
                        
for  (; i  <=   9 ; i ++ )
                        {
                            
if  (i  ==  page)
                            {
                                HtmlString.Append(
" <li><font color=red><strong> "   +  i.ToString()  +   " </strong></font></li> " );
                            }
                            
else
                            {
                                HtmlString.Append(
" <li><a href= "   +  UrlFormat  +   ""   +  i.ToString()  +   " > "   +  i.ToString()  +   " </a></li> " );
                            }
                        }
                        HtmlString.Append(
" <li>...</li> " );
                        
for  (i  =  pageCount  -   2 ; i  <=  pageCount; i ++ )
                        {
                            
if  (i  ==  page)
                            {
                                HtmlString.Append(
" <li><font color=red><strong> "   +  i.ToString()  +   " </strong></font></li> " );
                            }
                            
else
                            {
                                HtmlString.Append(
" <li><a href= "   +  UrlFormat  +   ""   +  i.ToString()  +   " > "   +  i.ToString()  +   " </a></li> " );
                            }
                        }
                    }
                    
else   if  (page  >=  pageCount  -   2 )
                    {
                        
for  (; i  <=   3 ; i ++ )
                        {
                            
if  (i  ==  page)
                            {
                                HtmlString.Append(
" <li><font color=red><strong> "   +  i.ToString()  +   " </strong></font></li> " );
                            }
                            
else
                            {
                                HtmlString.Append(
" <li><a href= "   +  UrlFormat  +   ""   +  i.ToString()  +   " > "   +  i.ToString()  +   " </a></li> " );
                            }
                        }
                        HtmlString.Append(
" <li>...</li> " );
                        
for  (i  =  pageCount  -   4 ; i  <=  pageCount; i ++ )
                        {
                            
if  (i  ==  page)
                            {
                                HtmlString.Append(
" <li><font color=red><strong> "   +  i.ToString()  +   " </strong></font></li> " );
                            }
                            
else
                            {
                                HtmlString.Append(
" <li><a href= "   +  UrlFormat  +   ""   +  i.ToString()  +   " > "   +  i.ToString()  +   " </a></li> " );
                            }
                        }
                    }
                    
else   if  (page  >=   4   &&  page  <=   5 )
                    {
                        
for  (; i  <=  page - 1 ; i ++ )
                        {
                            HtmlString.Append(
" <li><a href= "   +  UrlFormat  +   ""   +  i.ToString()  +   " > "   +  i.ToString()  +   " </a></li> " );
                        }
                        HtmlString.Append(
" <li><font color=red><strong> "   +  i.ToString()  +   " </strong></font></li> " );
                     
                            
for  (i  =  page  +   1 ; i  <  page  +   3 ; i ++ )
                            {
                                HtmlString.Append(
" <li><a href= "   +  UrlFormat  +   ""   +  i.ToString()  +   " > "   +  i.ToString()  +   " </a></li> " );
                            }
                        HtmlString.Append(
" <li>...</li> " );
                        
for  (i  =  pageCount  -   2 ; i  <=  pageCount; i ++ )
                        {
                            HtmlString.Append(
" <li><a href= "   +  UrlFormat  +   ""   +  i.ToString()  +   " > "   +  i.ToString()  +   " </a></li> " );
                        }
                    }
                    
else   if  (page  >=  pageCount  -   4   &&  page  <=  pageCount  -   3 )
                    {
                        
for  (; i  <=   3 ; i ++ )
                        {
                            HtmlString.Append(
" <li><a href= "   +  UrlFormat  +   ""   +  i.ToString()  +   " > "   +  i.ToString()  +   " </a></li> " );
                        }
                        HtmlString.Append(
" <li>...</li> " );
                        
for  (i  =  page  -   2 ; i  <  page; i ++ )
                        {
                            HtmlString.Append(
" <li><a href= "   +  UrlFormat  +   ""   +  i.ToString()  +   " > "   +  i.ToString()  +   " </a></li> " );
                        }
                        HtmlString.Append(
" <li><font color=red><strong> "   +  page.ToString()  +   " </strong></font></li> " );
                        
for  (i  =  page  +   1 ; i  <=  pageCount; i ++ )
                        {
                            HtmlString.Append(
" <li><a href= "   +  UrlFormat  +   ""   +  i.ToString()  +   " > "   +  i.ToString()  +   " </a></li> " );
                        }
                    }
                    
else
                    {
                        
for  (; i  <=   3 ; i ++ )
                        {
                            HtmlString.Append(
" <li><a href= "   +  UrlFormat  +   ""   +  i.ToString()  +   " > "   +  i.ToString()  +   " </a></li> " );
                        }
                        HtmlString.Append(
" <li>...</li> " );
                        
for  (i  =  page  -   2 ; i  <  page; i ++ )
                        {
                            HtmlString.Append(
" <li><a href= "   +  UrlFormat  +   ""   +  i.ToString()  +   " > "   +  i.ToString()  +   " </a></li> " );
                        }
                        HtmlString.Append(
" <li><font color=red><strong> "   +  page.ToString()  +   " </strong></font></li> " );
                        
for  (i  =  page  +   1 ; i  <  page  +   3 ; i ++ )
                        {
                            HtmlString.Append(
" <li><a href= "   +  UrlFormat  +   ""   +  i.ToString()  +   " > "   +  i.ToString()  +   " </a></li> " );
                        }
                        HtmlString.Append(
" <li>...</li> " );
                        
for  (i  =  pageCount  -   2 ; i  <=  pageCount; i ++ )
                        {
                            HtmlString.Append(
" <li><a href= "   +  UrlFormat  +   ""   +  i.ToString()  +   " > "   +  i.ToString()  +   " </a></li> " );
                        }
                    }
                }
                
if  (page  <  pageCount)
                {
                    HtmlString.Append(
" <li  class=\ " long \ " ><a href= "   +  UrlFormat  +   ""   +  Convert.ToString(page  +   1 +   " >下一页</a></li> " );
                }
                HtmlString.Append(
" <li  class=\ " long \ " ><a href= "   +  UrlFormat  +   ""   +  pageCount.ToString()  +   " >末页</a></li> " );
                HtmlString.Append(
" </ul> " );
                HtmlString.Append(
" </div> " );
            }
            
#endregion
            
return  HtmlString.ToString();
        }

    }
}

 

 

调用方式示例:

repeater1.Length  =   8
repeater1.UrlFormat 
=   " /Log.aspx?domain= "   +  blogContext.Domain  +   " & " ;
repeater1.Count 
=  Convert.ToInt64(blogContext.Owner.User_LogCount);
repeater1.DataSource 
=  BlogCache.GetUserBlogListByBlogIdPaged(blogContext.PageIndex,  8 , blogContext.BlogUserId);

 

对应的css代码:

代码
.page{ clear:both; margin:15px  0 ;} 
.page li,.page li. long {color: # 000 ; font - weight:bold;width:20px;border:1px solid #DFE2E7;  float : left;text - align:center; height:20px;line - height:20px;margin:1px;} 
.page li a,.page li. long  a{ display:block;color: #0000cc;font - weight:normal; text - decoration:none; text - align:center; height:20px;line - height:20px; width: 100 % ;} 
.page li. long ,.page li. long  a{ width:50px; } 
.page li a:hover,.page li. long  a:hover{background:#DFE2E7;} 

  

 这几个参数需要设置没有给默认值的哈,不然会报错的。写得有点乱,还是上大一那会写的,有点不灵活,html和css都是固定死的。

 

后来做ajax,翻页的时候是不能有刷新的,也有把上面的那个改成了js的写法,需要的可以看一下: 

 javascript 实现ajax调用下的动态分页脚本

 

 二. 通用分页

效果图片: 

这个分页的样式(html和css)都是自定义的,和代码无关,你可是自定义html内容,也没有和repeater绑定。有三个类,本来是编译成了一个组件的。

代码
using  System;
using  System.Collections.Generic;
using  System.Linq;
using  System.Text;

namespace  CommonPager
{
    
public   interface  IUrlManager
    {
        
int  CurrentPageIndex {  get ; }            //  当前页码
         string  GetPageUrl( int  pageIndex);            //  根据 页码 获取页面路径
         int  PageCount {  get ; }                      //  总页数

        
int  RecordCount {  get ; }                 //  记录总数
         int  PageSize {  get ; }                    //  分页大小
    }


}

  

代码
using  System;
using  System.Web;
using  System.Text.RegularExpressions;

namespace  CommonPager
{
    
public   class  DefaultUrlManager : IUrlManager
    {
        
private  HttpContext context;
        
private  Regex reg;
        
private   string  queryParam;           //  QueryString 参数名称
         private   int  currentPageIndex;        //  当前页
         private   int  pageCount;               //  总页数
         private   int  recordCount;         //  记录总数
         private   int  pageSize;             //  分页大小

        
//  构造函数
         public  DefaultUrlManager( int  recordCount,  int  pageSize,  string  queryParam)
        {
            
if  (recordCount  <   0 )
                
throw   new  ArgumentOutOfRangeException( " recordCount 应该大于等于 0 ! " );
            
if  (pageSize  <=   0 )
                
throw   new  ArgumentOutOfRangeException( " pageSize 应该大于 0 ! " );
            
if  ( string .IsNullOrEmpty(queryParam))
                
throw   new  ArgumentNullException( " queryParam 不能为空! " );


            
//  设置私有变量
             this .recordCount  =  recordCount;
            
this .pageSize  =  pageSize;
            
this .queryParam  =  queryParam;
            context 
=  HttpContext.Current;
            
string  pattern  =   @" (?<r1>[?&] "   +  queryParam  +   @" =)[^&]* " ;
            reg 
=   new  Regex(pattern, RegexOptions.IgnoreCase);


            
//  如果记录数为0,至少也显示一页
             if  (recordCount  ==   0 )
            {
                currentPageIndex 
=   1 ;
                pageCount 
=   1 ;
            }
            
else
            {

                
//  设置总页数
                 double  recordCount2  =  Convert.ToDouble(recordCount);
                
double  pageSize2  =  Convert.ToDouble(pageSize);
                pageCount 
=  Convert.ToInt32(Math.Ceiling(recordCount2  /  pageSize2));

                
//  设置当前页码
                 string  queryIndex  =  context.Request.QueryString[queryParam];

                
if  ( string .IsNullOrEmpty(queryIndex))
                    currentPageIndex 
=   1 ;
                
else
                {
                    
try
                    {
                        currentPageIndex 
=  Math.Abs( int .Parse(queryIndex));

                        
if  (currentPageIndex  ==   0 )
                            currentPageIndex 
=   1 ;
                        
if  (currentPageIndex  >  pageCount)
                            currentPageIndex 
=  pageCount;
                    }
                    
catch
                    {
                        currentPageIndex 
=   1 ;
                    }
                }
            }
        }

        
//  默认以 "Page" 作为 QueryString 的参数
         public  DefaultUrlManager( int  recordCount,  int  pageSize) :  this (recordCount, pageSize,  " Page " ) { }

        
//  默认以 10 作为 PageSize
         public  DefaultUrlManager( int  recordCount,  string  queryParam) :  this (recordCount,  10 , queryParam) { }

        
//  默认以 "Page" 作为 QueryString 的参数,以 10 作为分页大小
         public  DefaultUrlManager( int  recordCount) :  this (recordCount,  10 ) { }


        
public   string  GetPageUrl( int  pageIndex)
        {
            
string  pageUrl  =  context.Request.Url.PathAndQuery;

            
//  如果找到匹配,也就是URL中含有类似 ?page=3 或者 &page=4 这样的字符串
            
//  则对后面的数值进行替换
             if  (reg.IsMatch(pageUrl))
            {
                pageUrl 
=  reg.Replace(pageUrl,  " ${r1} "   +  pageIndex.ToString());
            }
            
else
            {

                
string  queryString  =  context.Request.Url.Query;

                
if  ( string .IsNullOrEmpty(queryString))
                    pageUrl 
+=   " ? "   +  queryParam  +   " = "   +  pageIndex.ToString();
                
else
                    pageUrl 
+=   " & "   +  queryParam  +   " = "   +  pageIndex.ToString();
            }

            
return  pageUrl;
        }

        
public   int  CurrentPageIndex
        {
            
get  {  return  currentPageIndex; }
        }

        
public   int  PageCount
        {
            
get  {  return  pageCount; }
        }

        
public   int  RecordCount
        {
            
get  {  return  recordCount; }
        }

        
public   int  PageSize
        {
            
get  {  return  pageSize; }
        }
    }


}

 

代码
using  System;
using  System.ComponentModel;
using  System.Web.UI;
using  System.Web.UI.WebControls;
      
namespace  CommonPager
{
    [DefaultProperty(
" Text " )]
    [ToolboxData(
" <{0}:Pager runat=server ></{0}:Pager> " )]
    
public   class  Pager : WebControl
    {
        
#region  Field

        
private   int  currentPage;             //  当前页的页码
         private   int  previousPageCount  =   5 ;       //  当前页之前可以显示的最多条目数,大于此条目的将被隐藏
         private   int  afterPageCount  =   4 ;          //  当前页之后可以显示的最多条目数,大于此条目的将被隐藏
         private   int  pageCount;                   //  总页数

        
private   bool  showPrevious  =   false ;       //  是否显示 上一页、第一页 的链接
         private   bool  showNext  =   false ;           //  是否显示 下一页、最末页 的链接

        
private   int  startPage;                   //  显示的第一页 的 页码
         private   int  endPage;                 //  显示的最末页 的 页码

        
private   string  currentPageFormat  =   @" <a href='{0}' class='Current'>{1}</a> " ;
        
private   string  normalPageFormat  =   @" <a href='{0}' class='PageIcon'>{1}</a> " ;
        
private   string  headFormat  =   @"" ;
        
private   string  footerFormat  =   @"" ;
        
private   string  previousPageFormat  =   @" <a href='{0}' class='PageIcon'>上一页</a> " ;
        
private   string  nextPageFormat  =   @" <a href='{0}' class='PageIcon'>下一页</a> " ;
        
private   string  firstPageFormat  =   @" <a href='{0}' class='PageIcon'>第一页</a> " ;
        
private   string  lastPageFormat  =   @" <a href='{0}' class='PageIcon'>最末页</a> " ;
        
private   string  statPageFormat  =   @"  ( 第<b>{0}</b>页/共<b>{1}</b>页 ) " ;

        
private  IUrlManager urlManager;          //  设置接口

        
#endregion  

        
#region  Property]
        [Bindable(
true )]
        [Category(
" Appearance " )]
        [DefaultValue(
"" )]
        [Localizable(
true )]
        
public   string  HeadFormat
        {
            
get  {
                
return  headFormat;
            }
            
set  
            {
                
if  ( string .IsNullOrEmpty(value))
                {
                    
throw   new  Exception( " The HeaderFormat can not be null " );
                }
                headFormat 
=  value;
            }
        }
        [Bindable(
true )]
        [Category(
" Appearance " )]
        [DefaultValue(
"" )]
        [Localizable(
true )]
        
public   string  FooterFormat
        {
            
get  {  return  footerFormat; }
            
set
            {
                
if  ( string .IsNullOrEmpty(value))
                {
                    
throw   new  Exception( " The FooterFormat can not be null " );
                }
                footerFormat 
=  value;
            }
        }

        [Bindable(
true )]
        [Category(
" Appearance " )]
        [DefaultValue(
"" )]
        [Localizable(
true )]
        
public   string  PreviousPageFormat
        {
            
get
            {
                
return  previousPageFormat;
            }
            
set
            {
                
if  ( string .IsNullOrEmpty(value))
                {
                    
throw   new  Exception( " The PreviousPageFormat can not be null " );
                }
                previousPageFormat 
=  value;
            }
        }

        [Bindable(
true )]
        [Category(
" Appearance " )]
        [DefaultValue(
"" )]
        [Localizable(
true )]
        
public   string  NextPageFormat
        {
            
get  
            {
                
return  nextPageFormat;
            }
            
set
            {
                
if  ( string .IsNullOrEmpty(value))
                {
                    
throw   new  Exception( " The NextPageFormat can not be null " );
                }

                nextPageFormat 
=  value;
            }
        }

        [Bindable(
true )]
        [Category(
" Appearance " )]
        [DefaultValue(
"" )]
        [Localizable(
true )]
        
public   string  StatPageFormat
        {
            
get  {
                
return  statPageFormat;
            }
            
set  {
                
if  ( string .IsNullOrEmpty(value))
                {
                    
throw   new  Exception( " The StatPageFormat can not be null " );
                }

                statPageFormat 
=  value;
            }
        }


        [Bindable(
true )]
        [Category(
" Appearance " )]
        [DefaultValue(
"" )]
        [Localizable(
true )]
        
public   string  FirstPageFormat
        {
            
get  {  return  firstPageFormat; }
            
set  {
                
if  ( string .IsNullOrEmpty(value))
                {
                    
throw   new  Exception( " The FirstPageFormat can not be null " );
                }
                firstPageFormat 
=  value;
            }
        }

        [Bindable(
true )]
        [Category(
" Appearance " )]
        [DefaultValue(
"" )]
        [Localizable(
true )]
        
public   string  LastPageFormat
        {
            
get  {  return  lastPageFormat; }
            
set  {
                
if  ( string .IsNullOrEmpty(value))
                {
                    
throw   new  Exception( " The LastPageFormat can not be null " );
                }
                lastPageFormat 
=  value;
            }
        }

        [Bindable(
true )]
        [Category(
" Appearance " )]
        [DefaultValue(
"" )]
        [Localizable(
true )]
        
public   string  NormalPageStringFormat
        {
            
get  {
                
return  normalPageFormat;
            }
            
set  {
                
if  ( string .IsNullOrEmpty(value))
                {
                    
throw   new  Exception( " The NormalPageFormat can not be null " );
                }
                normalPageFormat 
=  value; 
            }
        }

        [Bindable(
true )]
        [Category(
" Appearance " )]
        [DefaultValue(
"" )]
        [Localizable(
true )]
        
public   string  CurrentPageStringFormat
        {
            
get
            {
                
return  currentPageFormat;
            }
            
set
            {
                
if  ( string .IsNullOrEmpty(value))
                {
                    
throw   new  Exception( " The CurrentPageFormat can not be null " );
                }
                currentPageFormat 
=  value;
            }
        }

        [Bindable(
true )]
        [Category(
" Appearance " )]
        [DefaultValue(
"" )]
        [Localizable(
true )]
        
public   string  Text
        {
            
get
            {
                String s 
=  (String)ViewState[ " Text " ];
                
return  ((s  ==   null ?  String.Empty : s);
            }

            
set
            {
                ViewState[
" Text " =  value;
            }
        }
      
        [Category(
" Appearance " )]
        [DefaultValue(
"" )]
        [Localizable(
true )]
        
public   int  PreviousPageCount
        {
            
get  {  return  previousPageCount; }
            
set  { previousPageCount  =  value; }
        }

        [Category(
" Appearance " )]
        [DefaultValue(
"" )]
        [Localizable(
true )]
        
public   int  AfterPageCount
        {
            
get  {  return  afterPageCount; }
            
set  { afterPageCount  =  value; }
        }

        [Category(
" Appearance " )]
        [DefaultValue(
"" )]
        [Localizable(
true )]
        
public  IUrlManager UrlManager
        {
            
get  {  return  urlManager; }
            
set  { urlManager  =  value; }
        }

        
#endregion

        
#region  Method
        
protected   override   void  RenderContents(HtmlTextWriter output)
        {
            
if  (urlManager  ==   null )
                
throw   new  ArgumentNullException( " IUrlManager 不能为 Null " );
            
//  获取当前页
            currentPage  =  urlManager.CurrentPageIndex;
            
//  获取总页数
            pageCount  =  urlManager.PageCount;

            SetStartPage();
            SetEndPage();
            HyperLink link;

            output.Write(HeadFormat);            
            
//  循环打印链接
             for  ( int  i  =  startPage; i  <=  endPage; i ++ )
            {
                
if  (showPrevious)  //  如果需要显示前一页、第一页链接
                    AddPreviousLink(urlManager, output);

                link 
=   new  HyperLink();
                
if  (i  ==  currentPage)
                {
                    
this .MakeLink(output, CurrentPageStringFormat, i, urlManager.GetPageUrl(i));
                    
// this.MakeLink(output, "CurrentPage", "第" + i.ToString() + "页", urlManager.GetPageUrl(i));
                }
                
else
                {
                    
this .MakeLink(output, NormalPageStringFormat, i, urlManager.GetPageUrl(i));
                    
// this.MakeLink(output, "PagerIcon", "第" + i.ToString() + "页", urlManager.GetPageUrl(i));
                }

                
if  (i  ==  endPage  &&  showNext)    //  如果需要显示 下一页、最末页 链接
                    AddNextLink(urlManager, output);
            }
            
            output.Write(String.Format(StatPageFormat, currentPage, pageCount));
            output.Write(FooterFormat);
        }

        
//  添加“第一页”,“上一页”的连接
         private   void  AddPreviousLink(IUrlManager urlManager, HtmlTextWriter output)
        {
            output.Write(String.Format(FirstPageFormat, urlManager.GetPageUrl(
1 )));
            output.Write(String.Format(PreviousPageFormat, urlManager.GetPageUrl(currentPage 
-   1 )));

            
// this.MakeLink(output, "PagerIcon", "第一页", urlManager.GetPageUrl(1));
            
// this.MakeLink(output, "PagerIcon", "上一页", urlManager.GetPageUrl(currentPage - 1));

            showPrevious 
=   false //  只显示一次
        }

        
//  添加 “下一页”、“最末页” 的链接
         private   void  AddNextLink(IUrlManager urlManager, HtmlTextWriter output)
        {
            output.Write(String.Format(NextPageFormat, urlManager.GetPageUrl(currentPage 
+   1 )));
            output.Write(String.Format(LastPageFormat, urlManager.GetPageUrl(pageCount)));

            
// this.MakeLink(output, "PagerIcon", "下一页", urlManager.GetPageUrl(currentPage + 1));
            
// this.MakeLink(output, "PagerIcon", "最末页", urlManager.GetPageUrl(pageCount));
            showNext  =   false //  可有可无,程序会跳出循环
        }

        
//  根据当前页,当前页之前可以显示的页数,算得从第几页开始进行显示
         private   void  SetStartPage()
        {
            
//  如果当前页小于 它前面所可以显示的条目数,那么显示第一页就是实际的第一页
             if  (currentPage  <=  previousPageCount)
            {
                startPage 
=   1 ;
            }
            
else   //  这种情况下 currentPage 前面总是能显示完,要根据后面的长短确定是不是前面应该多显示
            {
                
if  (currentPage  >  previousPageCount  +   1 )
                    showPrevious 
=   true ;

                
int  linkLength  =  (pageCount  -  currentPage  +   1 +  previousPageCount;

                
int  startPage  =  currentPage  -  previousPageCount;

                
while  (linkLength  <  previousPageCount  +  afterPageCount  +   1   &&  startPage  >   1 )
                {
                    linkLength
++ ;
                    startPage
-- ;
                }

                
this .startPage  =  startPage;
            }
        }

        
//  根据CurrentPage、总页数、当前页之后长度 算得显示的最末页是 第几页
         private   void  SetEndPage()
        {
            
//  如果当前页加上它之后可以显示的页数 大于 总页数,那么显示的最末页就是实际的最末页
             if  (currentPage  +  afterPageCount  >=  pageCount)
            {
                endPage 
=  pageCount;
            }
            
else   //  这种情况下 currentPage后面的总是可以显示完,要根据前面的长短确定是不是后面应该多显示
            {

                
int  linkLength  =  (currentPage  -  startPage  +   1 +  afterPageCount;

                
int  endPage  =  currentPage  +  afterPageCount;

                
while  (linkLength  <  previousPageCount  +  afterPageCount  +   1   &&  endPage  <  pageCount)
                {
                    linkLength
++ ;
                    endPage
++ ;
                }

                
if  (endPage  <  pageCount)
                    showNext 
=   true ;

                
this .endPage  =  endPage;
            }
        }

        
///   <summary>
        
///  
        
///   </summary>
        
///   <param name="output"></param>
        
///   <param name="Class"></param>
        
///   <param name="Title"></param>
        
///   <param name="Href"></param>
         private   void  MakeLink(HtmlTextWriter output, string  Class, string  Title, string  Href)
        {
            output.AddAttribute(HtmlTextWriterAttribute.Href, Href);
            output.AddAttribute(HtmlTextWriterAttribute.Class, Class);
            output.AddAttribute(HtmlTextWriterAttribute.Title, Title);
            output.RenderBeginTag(HtmlTextWriterTag.A);
            output.Write(Title);
            output.WriteEndTag(
" a " );
        }

        
private   void  MakeLink(HtmlTextWriter output,  string  format,  int  pageNumer, string  href)
        {
            output.Write(
string .Format(format, href, pageNumer));
        }

        
#endregion  
    }
}

 

调用方式:

代码

        pager1.CurrentPageStringFormat  =   " <span class=\ " current\ " >{1}</span> " ;
        pager1.StatPageFormat  =   "   " ;
        pager1.LastPageFormat  =   "   " ;
        CommonPager.DefaultUrlManager cp  =   new  CommonPager.DefaultUrlManager( 20000 , 20 " pageindex " );
        pager1.UrlManager  =  cp;

 

转载于:https://www.cnblogs.com/lulu/archive/2008/08/25/1275616.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值