.net分页控件

刚刚开始学.net的时候连改带写做的,现在不怎么用到....倒是觉得jquery.pager好用点...
    [DefaultProperty( " Text " ),
   ToolboxData(
" <{0}:CollectionPager runat=server></{0}:CollectionPager> " )]
    
public   class  Pager : UserControl
    
{
        
const string#region const string

        
const string PAGER = "<label class=\"{1}\">{0}</label>";
        
const string LINK = "<a href=\"{1}\">{0}</a>";

        
#endregion


        
pages#region pages

        
private int maxPages;
        
private int pageIndex = 1;
        
private int recordCount = 0;
        
private int pageSize = 10;
        
private int sliderSize = 8;
        
private bool showFirstLast = true;

        
private string queryStringKey = "PageIndex";

        
#endregion


        
back/next first/last#region back/next first/last

        
private string backText = "Back";
        
private string nextText = "Next";
        
private string firstText = "First";
        
private string lastText = "Last";

        [Bindable(
true), Category("back/next first/last"), Localizable(true)]
        
public virtual string BackText
        
{
            
get return backText; }
            
set { backText = value; }
        }

        [Bindable(
true), Category("back/next first/last"), Localizable(true)]
        
public virtual string NextText
        
{
            
get return nextText; }
            
set { nextText = value; }
        }

        [Bindable(
true), Category("back/next first/last"), Localizable(true)]
        
public virtual string FirstText
        
{
            
get return firstText; }
            
set { firstText = value; }
        }

        [Bindable(
true), Category("back/next first/last"), Localizable(true)]
        
public virtual string LastText
        
{
            
get return lastText; }
            
set { lastText = value; }
        }


        
#endregion


        
control attribute#region control attribute

        [Bindable(
false), Category("Appearance")]
        
public bool ShowFirstLast
        
{
            
get
            
{
                
return showFirstLast;
            }


            
set
            
{
                showFirstLast 
= value;
            }

        }


        [Bindable(
true), Category("Appearance"), Localizable(true)]
        
public int SliderSize
        
{
            
get return sliderSize; }
            
set { sliderSize = value; }
        }


        [Bindable(
true), Category("Appearance"), Localizable(true)]
        
public virtual string QueryStringKey
        
{
            
get return queryStringKey; }
            
set { queryStringKey = value; }
        }



        [Bindable(
true), Category("Appearance"), Localizable(true)]
        
public virtual int PageIndex
        
{
            
get
            
{
                
if (Request[queryStringKey] != null)
                
{
                    
int.TryParse(Request[queryStringKey].ToString(), out pageIndex);
                }

                
return pageIndex;
            }

            
set
            
{
                pageIndex 
= value;
            }

        }


        [Bindable(
true), Category("Appearance"), Localizable(true)]
        
public virtual int RecordCount
        
{
            
get
            
{
                
return recordCount;
            }

            
set
            
{
                recordCount 
= value;
            }

        }


        [Bindable(
true), Category("Appearance"), Localizable(true)]
        
public virtual int PageSize
        
{
            
get
            
{
                
return pageSize;
            }

            
set
            
{
                pageSize 
= value;
            }

        }


        [Bindable(
false), Category("Appearance"), Localizable(true)]
        
public virtual int PageCount
        
{
            
get
            
{
                
int PageCount = 0;
                PageCount 
= RecordCount / PageSize;
                
if ((RecordCount % PageSize) != 0)
                
{
                    PageCount
++;
                }

                
if (PageCount > maxPages)
                
{
                    PageCount 
= maxPages;
                }

                
return PageCount;
            }

        }


        
#endregion


        
Separator#region Separator

        
private string pageNumbersSeparator = " - ";
        
private string backNextSeparator = "&nbsp;.&nbsp;";
        
private string numbersSectionSeparator = "&nbsp;";

        [Bindable(
false), Category("Separator"), Localizable(true)]
        
public string NumbersSectionSeparator
        
{
            
get return numbersSectionSeparator; }
            
set { numbersSectionSeparator = value; }
        }


        [Bindable(
false), Category("Separator"), Localizable(true)]
        
public string BackNextSeparator
        
{
            
get return backNextSeparator; }
            
set { backNextSeparator = value; }
        }


        [Bindable(
false), Category("Separator"), Localizable(true)]
        
public string PageNumbersSeparator
        
{
            
get return pageNumbersSeparator; }
            
set { pageNumbersSeparator = value; }
        }


        
#endregion


        
CssClass#region CssClass

        
private string pagerCssClass = "PagerCssClass";
        
private string pagerNumbersCssClass = "PagerNumbersCssClass";
        
private string pagerSectionCssClass = "PagerSectionCssClass";

        
/**//// <summary>
        
/// 跳转主样式
        
/// </summary> 

        [Bindable(true), Category("Appearance"), Localizable(true)]
        
public string PagerSectionCssClass
        
{
            
get return pagerSectionCssClass; }
            
set { pagerSectionCssClass = value; }
        }


        
/**//// <summary>
        
/// 页码显示样式
        
/// </summary>

        [Bindable(true), Category("Appearance"), Localizable(true)]
        
public string PagerNumbersCssClass
        
{
            
get return pagerNumbersCssClass; }
            
set { pagerNumbersCssClass = value; }
        }


        
/**//// <summary>
        
/// 分页主样式
        
/// </summary>

        [Bindable(true), Category("Appearance"), Localizable(true)]
        
public string PagerCssClass
        
{
            
get return pagerCssClass; }
            
set { pagerCssClass = value; }
        }



        
#endregion


        
public method#region public method
 
        
static public string UpdateQueryStringItem(System.Web.HttpRequest httpRequest, string queryStringKey, string newQueryStringValue)
        
{
            
string NewURL = httpRequest.RawUrl;
 
            
if (httpRequest.QueryString[queryStringKey] != null)
            
{
                
string OrignalSet = String.Format("{0}={1}", queryStringKey, httpRequest.QueryString[queryStringKey]);
                
string NewSet = String.Format("{0}={1}", queryStringKey, newQueryStringValue);
 
                
if (newQueryStringValue.Trim() == "")
                

                    NewURL 
= Regex.Replace(NewURL, "&" + OrignalSet, "", RegexOptions.IgnoreCase);
 
                    NewURL 
= Regex.Replace(NewURL, "?" + OrignalSet + "&""?", RegexOptions.IgnoreCase);
 
                    NewURL 
= Regex.Replace(NewURL, "?" + OrignalSet, "", RegexOptions.IgnoreCase);
                }
 
                
else
                
{
                    NewURL 
= Regex.Replace(NewURL, OrignalSet, NewSet, RegexOptions.IgnoreCase);
                }

            }
 
            
else if (newQueryStringValue.Trim() != "")
            

                
if (httpRequest.QueryString.Count == 0)
                
{
                    NewURL 
+= string.Format("?{0}={1}", queryStringKey, newQueryStringValue);
                }
 
                
else
                
{
                    NewURL 
+= string.Format("&{0}={1}", queryStringKey, newQueryStringValue);
                }

            }

            
return NewURL;
        }


        
/**//// <summary>
        
/// Number?
        
/// </summary>
        
/// <param name="Text"></param>
        
/// <returns></returns>

        public static bool IsNumeric(string Text)
        
{
            
if (Text == "" || Text == null)
            
{
                
return false;
            }

            Text 
= Text.Trim();
            
bool bResult = Regex.IsMatch(Text, @"^\d+$");
            
return bResult;
        }

        
#endregion


        
build numbers and BACK/NEXT section#region build numbers and BACK/NEXT section

        
protected virtual string BuildPageNumbers(int currentPage, int pageCount)
        
{
            StringBuilder Pages 
= new StringBuilder();

            
int StartPage = 1;

            
//End Page
            int EndPage = 0;
            
if (pageCount > maxPages)
            
{
                EndPage 
= maxPages;
            }

            
else
            
{
                EndPage 
= pageCount;
            }


            
//Adjust for slider 
            int Half = (int)Math.Floor((double)(SliderSize - 1/ 2);
            
//8: Half = 3
            
//7: Half = 3

            
int NumAbove = currentPage + Half + ((SliderSize - 1% 2);
            
int NumBelow = currentPage - Half;

            
if (NumBelow < 1)
            
{
                NumAbove 
+= (1 - NumBelow);
                NumBelow 
= 1;
            }


            
if (NumAbove > EndPage)
            
{
                NumBelow 
-= (NumAbove - EndPage);
                
if (NumBelow < 1)
                
{
                    NumBelow 
= 1;
                }

                NumAbove 
= EndPage;
            }


            StartPage 
= NumBelow;
            EndPage 
= NumAbove;

            
for (int i = StartPage; i <= EndPage; i++)
            
{
                
int RecordStart;
                
int RecordEnd;

                
//For Display
                if (Context == null)
                
{
                    RecordStart 
= ((i - 1* PageSize) + 1;
                    RecordEnd 
= i * PageSize;

                    
if (i > StartPage)
                    
{
                        
if (PageNumbersSeparator.ToLower() == "&nbsp;")
                        
{
                            Pages.AppendFormat(
"{0}", PageNumbersSeparator);
                        }

                        
else
                        
{
                            Pages.AppendFormat(
" {0} ", PageNumbersSeparator);
                        }

                    }


                    
if (i == StartPage)
                    
{
                        Pages.AppendFormat(
"<B>{0}</B>", i.ToString());
                    }

                    
else
                    
{
                        Pages.AppendFormat(
"<a href='#'>{0}</a>", i.ToString());
                    }

                }

                
else
                

                    RecordStart 
= ((i - 1* PageSize) + 1;
 
                    
if (i * PageSize > RecordCount)
                    
{
                        RecordEnd 
= RecordCount;
                    }

                    
else if (RecordCount == PageSize)
                    
{
                        RecordEnd 
= (RecordStart - 1+ PageSize;
                    }

                    
else
                    
{
                        RecordEnd 
= (RecordStart - 1+ RecordCount;
                    }


                    
if (i > StartPage)
                    
{
                        
if (PageNumbersSeparator.ToLower() == "&nbsp;")
                        
{
                            Pages.AppendFormat(
"{0}", PageNumbersSeparator);
                        }

                        
else
                        
{
                            Pages.AppendFormat(
" {0} ", PageNumbersSeparator);
                        }

                    }


                    
if (i == currentPage)
                    
{
                        Pages.AppendFormat(
"<B>{0}</B>", i.ToString());
                    }

                    
else
                    
{
                        Pages.AppendFormat(LINK
                            , i
                            , UpdateQueryStringItem(Context.Request, QueryStringKey, i.ToString()));
                    }

                }

            }

            
return Pages.ToString();
        }


        
protected virtual string BuildLinkNavBack(int currentPage)
        
{
            StringBuilder LinkNav 
= new StringBuilder();

            
//Next Links
            if (currentPage == 1 || RecordCount == 0)
            
{
                
if (ShowFirstLast)
                
{
                    LinkNav.Append(FirstText 
+ "&nbsp;");
                }

                LinkNav.Append(BackText);
            }

            
else
            
{
                
if (ShowFirstLast)
                
{
                    LinkNav.AppendFormat(LINK 
+ "&nbsp;"
                        , FirstText
                        , UpdateQueryStringItem(Context.Request, QueryStringKey, Convert.ToString(
1)));
                }

                LinkNav.AppendFormat(LINK
                    , BackText
                    , UpdateQueryStringItem(Context.Request, QueryStringKey, Convert.ToString(currentPage 
- 1)));
            }


            
return LinkNav.ToString();
        }


        
protected virtual string BuildLinkNavNext(int currentPage, int pageCount)
        
{
            StringBuilder LinkNav 
= new StringBuilder();

            
if (Context == null)
            
{
                LinkNav.AppendFormat(
"<a href='#'>{0}</a>", NextText);
                
if (ShowFirstLast)
                
{
                    LinkNav.AppendFormat(
"&nbsp;<a href='#'>{0}</a>", LastText);
                }

            }

            
else if (currentPage >= maxPages || currentPage == PageCount)
            
{
                LinkNav.Append(NextText);
                
if (ShowFirstLast)
                
{
                    LinkNav.Append(
"&nbsp;" + LastText);
                }

            }

            
else
            
{
                LinkNav.AppendFormat(
"<a href='{0}'>{1}</A>"
                    , UpdateQueryStringItem(Context.Request, QueryStringKey, Convert.ToString(currentPage 
+ 1))
                    , NextText);
                
if (ShowFirstLast)
                
{
                    LinkNav.AppendFormat(
"&nbsp;<a href='{0}'>{1}</A>"
                        , UpdateQueryStringItem(Context.Request, QueryStringKey, Convert.ToString(pageCount))
                        , LastText);
                }

            }


            
return LinkNav.ToString();
        }


        
#endregion


        
Render method#region Render method 

        
protected override void OnPreRender(EventArgs e)
        
{
            maxPages 
= RecordCount / PageSize;
            
base.OnPreRender(e);
        }


        
protected override void Render(HtmlTextWriter writer)
        
{
            StringBuilder sb 
= new StringBuilder();

            sb.Append(BuildPageNumbers(PageIndex, PageCount));
            sb.Append(NumbersSectionSeparator);
            sb.Append(BuildLinkNavBack(PageIndex));
            sb.Append(BackNextSeparator);
            sb.Append(BuildLinkNavNext(PageIndex, PageCount));
            writer.Write(
string.Format(PAGER, sb.ToString(), PagerCssClass));
            
base.Render(writer);
        }


        
#endregion

    }



调用方法
<% @ Register TagPrefix="Repeater" Namespace="Freshers.Component" Assembly="Freshers"  %>

< Repeater:Pager  ID ="Pager"  runat ="server"  SliderSize ="5"  BackText ="上一页"  NextText ="下一页"
                        FirstText
="首页"  LastText ="尾页"   PageSize ="10"  RecordCount ="100" />

转载于:https://www.cnblogs.com/yans/archive/2008/07/03/1234564.html

再次声明 千万不要把XiaoQi.dll 跟 XiaoQi.XML 给分开 2013年3月8号 修复了很多bug 调整了源代码 添加的时候 一定要引用 不要直接复制DLL 不然没有方法注释 最强大分分页控件 华丽的分页控件 实用的分页控件 有最新最实用的方法 联系小柒 下面是 AspNetHelp 类 方法概述 ///Show()弹出对话框 ///重载Show()弹出对话框 并且跳转界面 ///ShowJavascript()执行javascript脚本 ///FileDelete()给出文件虚拟路径删除文件 ///FileSize()获取上传文件大小 ///FileUpload()文件上传 路径upload/ 自动重命名 ///FileDownload()文件下载 调用方法如 FileDownload(Response,Server,文件虚拟路径) ///FileTxtWrite()写入TXT文本 给出要创建Txt 文本的地址 ///FileTxtReader()读取TXT文本 Txt 文本的地址 返回一个数组 每一行为数组里的一个元素 ///StringEncrypt() DES字符串加密中文不可以加密 ///StringDecrypt()DES解密字符串 ///StringMD5Encrypt()MD5加密 ///StringPYChar()单个汉字返回该汉字首字母 ///StringRandom()生成指定位数的随机数 ///StringEdit()给出指定字符串长度多少位后用点显示... ///StringReplaceSpace()替换文本中的空格和换行 ///StringColor()改变字的颜色 ///StringNull()当对象是空的时候 转为空字符串 ///StringConvert()汉字转拼音 ///StringNumber()数字转换中文 ///StringRep()url参数为中文时候转换加密 ///StringRes()url参数为中文时候转换解密 ///ShowWindowForm()弹出新窗口页面 ///ShowFormModalDialog()弹出模式窗口页面 ///SqlGetMaxID()给出表名列名 int类型 查询出最大列值+1 适用于主键 ///SqlGetSingle()执行一条计算查询结果语句,返回查询结果(object)。 ///SqlExecute()执行SQL语句,返回影响的记录数 ///SqlRunStr()执行SQL语句,不返回影响的记录数 ///SqlRunReturn()执行SQL语句,并返回第一行第一列结果 ///SqlGetReader()获得SqlDataReader对象 使用完须关闭DataReader,关闭数据库连接 ///SqlGetTable()执行查询语句,返回DataTable ///SqlDataSet()执行查询语句,返回DataSet ///SqlIsCunZai()执行Sql 语句查询是否有数据 如果没有返回假 ///SqlRunProc()执行存储过程 ///DataBindDropDownListDefault()DropDownList控件绑定 带默认选择项 如"请选择" ///DataBindDropDownList()DropDownList控件绑定 不带默认选择项 ///DataBindRadioButtonList()RadioButtonList控件绑定 默认第一个选中 ///DataBindCheckBoxList()CheckBoxList控件绑定 ///ElseIpAddr()调用此方法 返回当前登录的省市IP地址 ///ElseDataTimeIng()返回本地电脑的当前日期的年月日时分秒 动态的显示 JS实现 ///ElsePageLoad()页面加载数据加载完成呈现页面 ///ElseCkeck()返回页面验证码图片 使用方法:单独创建一个页面 在首次加载事件里写 AspNetHelp.ElseCkeck(Page); 在使用验证码的页面直接写 img src="这个页面的路径" 注意验证码保存在 Session["CheckCode"]中 这里是区分大小写的 ///ElseColorRGB()由于QQ截图的取色会出现RGB的颜色 这里能转换成16进制 分页控件详情请看内置文档
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值