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 onchange="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、付费专栏及课程。

余额充值