Eric的分页条小控件

利用QueryString实现分页参数传递的分页条控件, 纯UI层使用, 不影响分层, 简单实用!

主要属性: RecordCount

设计时图示:  

源代码:

using  System;
using  System.Collections;
using  System.Collections.Specialized;
using  System.ComponentModel;
using  System.Text;
using  System.Web;
using  System.Web.UI;
using  System.Web.UI.WebControls;

[assembly: TagPrefix(
" EFPlatform.WebControls " " efp " )]
namespace  EFPlatform.WebControls
{
    [ToolboxData(
" <{0}:PagerBar runat="server"></{0}:PagerBar> " )]
    
public   class  PagerBar : Control, INamingContainer
    {
        
#region  Properties

        
#region  Data(数据)
        
#region  CurrentPage
        [Category(
" Data " )]
        [DefaultValue(
1 )]
        
public   int  CurrentPage
        {
            
get
            {
                
if (ViewState[ " CurrentPage " ==   null )
                {
                    
try
                    {
                        ViewState[
" CurrentPage " =   int .Parse(HttpContext.Current.Request.QueryString[PageParamName]);
                    }
                    
catch
                    {
                        ViewState[
" CurrentPage " =   1 ;
                    }
                }

                
return  ( int )ViewState[ " CurrentPage " ];
            }

            
set
            {
                ViewState[
" CurrentPage " =  value;
            }
        }
        
#endregion

        
#region  PageSize
        [Category(
" Data " )]
        [DefaultValue(
10 )]
        
public   int  PageSize
        {
            
get
            {
                
int  pageSize  =  (ViewState[ " PageSize " ==   null ?   10  : ( int )ViewState[ " PageSize " ];
                
return  (pageSize  >   0 ?  pageSize :  0 ;
            }

            
set
            {
                ViewState[
" PageSize " =  value;
            }
        }
        
#endregion

        
#region  RecordCount
        [Category(
" Data " )]
        [DefaultValue(
0 )]
        
public   int  RecordCount
        {
            
get
            {
                
return  (ViewState[ " RecordCount " ==   null ?   0  : ( int )ViewState[ " RecordCount " ];
            }

            
set
            {
                ViewState[
" RecordCount " =  value;
            }
        }
        
#endregion

        
#region  PageCount
        [Browsable(
false )]
        
public   int  PageCount
        {
            
get
            {
                
return  ( int )Math.Ceiling(( double )RecordCount  /  PageSize);
            }
        }
        
#endregion
        
#endregion

        
#region  Navigation(导航)
        
#region  PageParamName
        [Category(
" Navigation " )]
        [DefaultValue(
" CurrentPage " )]
        
public   string  PageParamName
        {
            
get
            {
                
return  (ViewState[ " PageParamName " ==   null ?   " CurrentPage "  : ( string )ViewState[ " PageParamName " ];
            }

            
set
            {
                ViewState[
" PageParamName " =  value;
            }
        }
        
#endregion

        
#region  FirstPageText
        [Category(
" Navigation " )]
        [DefaultValue(
" 首页 " )]
        
public   string  FirstPageText
        {
            
get
            {
                
return  (ViewState[ " FirstPageText " ==   null ?   " 首页 "  : ( string )ViewState[ " FirstPageText " ];
            }

            
set
            {
                ViewState[
" FirstPageText " =  value;
            }
        }
        
#endregion

        
#region  PrePageText
        [Category(
" Navigation " )]
        [DefaultValue(
" 上一页 " )]
        
public   string  PrePageText
        {
            
get
            {
                
return  (ViewState[ " PrePageText " ==   null ?   " 上一页 "  : ( string )ViewState[ " PrePageText " ];
            }

            
set
            {
                ViewState[
" PrePageText " =  value;
            }
        }
        
#endregion

        
#region  NextPageText
        [Category(
" Navigation " )]
        [DefaultValue(
" 下一页 " )]
        
public   string  NextPageText
        {
            
get
            {
                
return  (ViewState[ " NextPageText " ==   null ?   " 下一页 "  : ( string )ViewState[ " NextPageText " ];
            }

            
set
            {
                ViewState[
" NextPageText " =  value;
            }
        }
        
#endregion

        
#region  LastPageText
        [Category(
" Navigation " )]
        [DefaultValue(
" 末页 " )]
        
public   string  LastPageText
        {
            
get
            {
                
return  (ViewState[ " LastPageText " ==   null ?   " 末页 "  : ( string )ViewState[ " LastPageText " ];
            }

            
set
            {
                ViewState[
" LastPageText " =  value;
            }
        }
        
#endregion
        
#endregion

        
#region  Layout(布局)
        
#region  Width
        [Category(
" Layout " )]
        
public  Unit Width
        {
            
get
            {
                
return  (ViewState[ " Width " ==   null ?  Unit.Percentage( 100 ) : (Unit)ViewState[ " Width " ];
            }

            
set
            {
                ViewState[
" Width " =  value;
            }
        }
        
#endregion

        
#region  Height
        [Category(
" Layout " )]
        
public  Unit Height
        {
            
get
            {
                
return  (ViewState[ " Height " ==   null ?  Unit.Pixel( 20 ) : (Unit)ViewState[ " Height " ];
            }

            
set
            {
                ViewState[
" Height " =  value;
            }
        }
        
#endregion

        
#region  CellPadding
        [Category(
" Layout " )]
        [DefaultValue(
0 )]
        
public   int  CellPadding
        {
            
get
            {
                
return  (ViewState[ " CellPadding " ==   null ?   0  : ( int )ViewState[ " CellPadding " ];
            }

            
set
            {
                ViewState[
" CellPadding " =  value;
            }
        }
        
#endregion

        
#region  CellSpacing
        [Category(
" Layout " )]
        [DefaultValue(
0 )]
        
public   int  CellSpacing
        {
            
get
            {
                
return  (ViewState[ " CellSpacing " ==   null ?   0  : ( int )ViewState[ " CellSpacing " ];
            }

            
set
            {
                ViewState[
" CellSpacing " =  value;
            }
        }
        
#endregion
        
#endregion

        
#region  Appearance(外观)
        
#region  TableCssClass
        [Category(
" Appearance " )]
        
public   string  TableCssClass
        {
            
get
            {
                
return  (ViewState[ " TableCssClass " ==   null ?   string .Empty : ( string )ViewState[ " TableCssClass " ];
            }

            
set
            {
                ViewState[
" TableCssClass " =  value;
            }
        }
        
#endregion

        
#region  TableCellCssClass
        [Category(
" Appearance " )]
        
public   string  TableCellCssClass
        {
            
get
            {
                
return  (ViewState[ " TableCellCssClass " ==   null ?   string .Empty : ( string )ViewState[ " TableCellCssClass " ];
            }

            
set
            {
                ViewState[
" TableCellCssClass " =  value;
            }
        }
        
#endregion

        
#region  PagerCssClass
        [Category(
" Appearance " )]
        
public   string  PagerCssClass
        {
            
get
            {
                
return  (ViewState[ " PagerCssClass " ==   null ?   string .Empty : ( string )ViewState[ " PagerCssClass " ];
            }

            
set
            {
                ViewState[
" PagerCssClass " =  value;
            }
        }
        
#endregion
        
#endregion

        
#endregion

        
#region  GetPagerUrl
        
private   string  GetPagerUrl()
        {
            StringBuilder sbUrl 
=   new  StringBuilder(HttpContext.Current.Request.Path);
            sbUrl.Append(
' ? ' );
            NameValueCollection query 
=  HttpContext.Current.Request.QueryString;

            
for ( int  i  =   0 ; i  <  query.Count; i ++ )
            {
                
if (query.GetKey(i)  !=  PageParamName)
                {
                    sbUrl.Append(query.GetKey(i));
                    sbUrl.Append(
' = ' );
                    sbUrl.Append(HttpContext.Current.Server.UrlEncode(query.Get(i)));
                    sbUrl.Append(
' & ' );
                }
            }

            sbUrl.Append(PageParamName);
            sbUrl.Append(
' = ' );
            
return  sbUrl.ToString();
        }
        
#endregion

        
#region  GetPagerLinks
        
private   string [] GetPagerLinks()
        {
            
string [] links  =   new   string [ 5 ];
            
int  prePage  =   1 ;
            
int  nextPage  =   1 ;

            
if (RecordCount  >   0 )
            {
                
string  pagerUrl  =   this .GetPagerUrl();
                prePage 
=  (CurrentPage  >   1 ?  (CurrentPage  -   1 ) :  1 ;
                nextPage 
=  (CurrentPage  +   1   >  PageCount)  ?  PageCount : CurrentPage  +   1 ;
                links[
0 =  pagerUrl  +   " 1 " ;
                links[
1 =  pagerUrl  +  prePage.ToString();
                links[
2 =  pagerUrl  +  nextPage.ToString();
                links[
3 =  pagerUrl  +  PageCount.ToString();
                links[
4 =  pagerUrl;
                
return  links;
            }
            
else
            {
                CurrentPage 
=   0 ;
            }

            
return  links;
        }
        
#endregion

        
#region  GetPagerOptions
        
private   string  GetPagerOptions()
        {
            StringBuilder sb 
=   new  StringBuilder();

            
for ( int  i  =   1 ; i  <=   this .PageCount; i ++ )
            {
                
if (i  ==   this .CurrentPage)
                {
                    sb.AppendFormat(
" <OPTION value="{0}" selected>{0}</OPTION> " , i);
                }
                
else
                {
                    sb.AppendFormat(
" <OPTION value="{0}">{0}</OPTION> " , i);
                }
            }

            
return  sb.ToString();
        }
        
#endregion

        
#region  GetHTML
        
private   string  GetHTML()
        {
            
string [] links  =   this .GetPagerLinks();
            StringBuilder sb 
=   new  StringBuilder();
            sb.AppendFormat(
" <TABLE width="{0}%" height="{1}" cellpadding="{2}" cellspacing="{3}" class="{4}"><TR> " this .Width.Value,  this .Height.Value,  this .CellPadding,  this .CellSpacing,  this .TableCssClass);
            sb.AppendFormat(
" <TD align="left" width="100" class="{0}"> " this .TableCellCssClass);
            sb.AppendFormat(
" <SPAN>共&nbsp;{0}&nbsp;条数据</SPAN> " this .RecordCount);
            sb.AppendFormat(
" </TD><TD align="center" class="{0}"> " this .TableCellCssClass);
            sb.AppendFormat(
" <A class="{0}" href="{1}">{2}</A>&nbsp; " this .PagerCssClass, links[ 0 ],  this .FirstPageText);
            sb.AppendFormat(
" <A class="{0}" href="{1}">{2}</A>&nbsp; " this .PagerCssClass, links[ 1 ],  this .PrePageText);
            sb.AppendFormat(
" <A class="{0}" href="{1}">{2}</A>&nbsp; " this .PagerCssClass, links[ 2 ],  this .NextPageText);
            sb.AppendFormat(
" <A class="{0}" href="{1}">{2}</A>&nbsp; " this .PagerCssClass, links[ 3 ],  this .LastPageText);
            sb.AppendFormat(
" &nbsp;转到<SELECT οnchange="window.location.href='{0}'+this.options[this.selectedIndex].value;">{1}</SELECT>页 " , links[ 4 ],  this .GetPagerOptions());
            sb.AppendFormat(
" </TD><TD align="right" class="{0}">第&nbsp;{1}&nbsp;/&nbsp;{2}&nbsp;页</TD> " this .TableCellCssClass,  this .CurrentPage,  this .PageCount);
            sb.AppendFormat(
" </TR></TABLE> " );
            
return  sb.ToString();
        }
        
#endregion

        
#region  override Render
        
protected   override   void  Render(HtmlTextWriter writer)
        {
            writer.Write(
this .GetHTML());
            
base .Render (writer);
        }
        
#endregion
    }
}
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值