花两个小时,做了个分页控件
一个简单的分页控件,内置4种显示风格,主要是将AspNetForums的分页跟一个朋友(小熊)的合一块了,ANF的单调了点,小熊的吧,用起来有点麻烦,我人懒,就整一块了.:)
内置四种风格,通过设置StyleName(BasePager,CoolPager,DiscuzPager,SmallPager)就行,不过要注意大小写,CSS是从Assembly里面取的.
下面是效果,

如果想定制一些更炫的效果,就将StyleName设置成其它的任意名字.自己写CSS:
生成的HTML代码如下:
<script type="text/javascript">
//<![CDATA[
                function xiaokui_pager_go(){
                 var n=event.srcElement;
                 if(event.keyCode==13)
                 {
                  var strUrl=location.href.toLowerCase();
                  strUrl=strUrl.replace(/(\&)?pageindex=\d+/gi,'');
                  if(location.search=='')
                            strUrl=strUrl+'?pageindex='+n.value;
                        else
                            strUrl=strUrl+'&pageindex='+n.value;
                        strUrl=strUrl.replace('?&','?');
                  location.href=strUrl;
                        return false;
               }
                }//]]>
</script>
<div id="Pager1" class="SmallPager Left">
<span class="SmallPager_pre">
<a id="Pager1" class="" id="Prev" href="http://localhost:2625/WebSite/Default.aspx?PageIndex=1"><</a>
</span>
<span class="SmallPager_curr">1</span>
<span class="SmallPager_number"><a id="2" href="http://localhost:2625/WebSite/Default.aspx?PageIndex=2">2</a></span>
<span class="SmallPager_number"><a id="3" href="http://localhost:2625/WebSite/Default.aspx?PageIndex=3">3</a></span>
<span class="SmallPager_number"><a id="4" href="http://localhost:2625/WebSite/Default.aspx?PageIndex=4">4</a></span>
<span class="SmallPager_number"><a id="5" href="http://localhost:2625/WebSite/Default.aspx?PageIndex=5">5</a></span>
<span class="SmallPager_next"><a id="Next" href="http://localhost:2625/WebSite/Default.aspx?PageIndex=2">></a></span>
    GO:<input name="txtCustom" type="text" id="txtCustom" onkeydown="return xiaokui_pager_go();" onkeyup="this.value=this.value.replace(/[^0-9]/gi,'');" />
</div>
都在Span里面包着.想怎么改,就怎么改.
代码如下:

 Code
Code1
 using System;
using System;2
 using System.Collections.Generic;
using System.Collections.Generic;3
 using System.ComponentModel;
using System.ComponentModel;4
 using System.Text;
using System.Text;5
 using System.Web;
using System.Web;6
 using System.Web.UI;
using System.Web.UI;7
 using System.Web.UI.WebControls;
using System.Web.UI.WebControls;8
 using System.IO;
using System.IO;9
 using System.Reflection;
using System.Reflection;10

11
 namespace Bqrm.Web.UI.WebControls
namespace Bqrm.Web.UI.WebControls12


 {
{13

 对齐方式 enum#region 对齐方式 enum
    对齐方式 enum#region 对齐方式 enum14

 /**//// <summary>
    /**//// <summary>15
 /// 对齐方式
    /// 对齐方式16
 /// </summary>
    /// </summary>17
 public enum Align
    public enum Align18

 
     {
{19

 /**//// <summary>
        /**//// <summary>20
 /// 左对齐
        /// 左对齐21
 /// </summary>
        /// </summary>22
 Left = 0,
        Left = 0,23

 /**//// <summary>
        /**//// <summary>24
 /// 居中
        /// 居中25
 /// </summary>
        /// </summary>26
 Center,
        Center,27

 /**//// <summary>
        /**//// <summary>28
 /// 右对齐
        /// 右对齐29
 /// </summary>
        /// </summary>30
 Right
        Right31
 }
    }32
 #endregion
    #endregion33

 /**//// <summary>
    /**//// <summary>34
 /// 分页显示类
    /// 分页显示类35
 /// </summary>
    /// </summary>36
 [ToolboxData("<{0}:Pager runat=server></{0}:Pager>")]
    [ToolboxData("<{0}:Pager runat=server></{0}:Pager>")]37
 public class Pager:WebControl
    public class Pager:WebControl38

 
     {
{39

40

 私有成员#region 私有成员
        私有成员#region 私有成员41
 private int _PageIndex;
        private int _PageIndex;42
 private string _StyleName;
        private string _StyleName;43
 private Align _Align;
        private Align _Align;44
 private StringBuilder sbData = new StringBuilder();
        private StringBuilder sbData = new StringBuilder();45
 HyperLink previousLink;
        HyperLink previousLink;46
 HyperLink nextLink;
        HyperLink nextLink;47
 HyperLink firstLink;
        HyperLink firstLink;48
 HyperLink lastLink;
        HyperLink lastLink;49
 HyperLink[] pagingHyperLinks;
        HyperLink[] pagingHyperLinks;50
 TextBox txtCustom;
        TextBox txtCustom;51

 private string preString = "<span class=\"
        private string preString = "<span class=\" {0}_
{0}_ {1}\">";
{1}\">";52
 private string lastString = "</span>";
        private string lastString = "</span>";53

 private string currentPageString = "<span class=\"
        private string currentPageString = "<span class=\" {0}_curr\">{1}</span>";
{0}_curr\">{1}</span>";54
 private bool showTextBox = true;
        private bool showTextBox = true;55
 #endregion
        #endregion56

57

 构造函数#region 构造函数
        构造函数#region 构造函数58

 /**//// <summary>
        /**//// <summary>59
 /// 构造函数
        /// 构造函数60
 /// </summary>
        /// </summary>61
 public Pager()
        public Pager()62

 
         {
{63
 this._StyleName = "BasePager";
            this._StyleName = "BasePager";64
 this._Align = Align.Left;
            this._Align = Align.Left;65
 }
        }66
 #endregion
        #endregion67

68
 bool showCurrentPage = true;
                bool showCurrentPage = true;69

 /**//// <summary>
        /**//// <summary>70
 /// 显示当前页统计信息.如:当前页 1/10 共有1000条记录
        /// 显示当前页统计信息.如:当前页 1/10 共有1000条记录71
 /// </summary>
        /// </summary>72
 public bool ShowCurrentPage
        public bool ShowCurrentPage73

 
         {
{74

 get
            get  { return showCurrentPage; }
{ return showCurrentPage; }75

 set
            set  { showCurrentPage = value; }
{ showCurrentPage = value; }76
 }
        }77

78
 string firstPageText = "<<";
        string firstPageText = "<<";79

 /**//// <summary>
        /**//// <summary>80
 /// 首页链接显示的字符
        /// 首页链接显示的字符81
 /// </summary>
        /// </summary>82
 public string FirstPageText
        public string FirstPageText83

 
         {
{84

 get
            get  { return firstPageText; }
{ return firstPageText; }85

 set
            set  { firstPageText = value; }
{ firstPageText = value; }86
 }
        }87

88
 string lastPageText = ">>";
        string lastPageText = ">>";89

 /**//// <summary>
        /**//// <summary>90
 /// 尾页链接显示的字符
        /// 尾页链接显示的字符91
 /// </summary>
        /// </summary>92
 public string LastPageText
        public string LastPageText93

 
         {
{94

 get
            get  { return lastPageText; }
{ return lastPageText; }95

 set
            set  { lastPageText = value; }
{ lastPageText = value; }96
 }
        }97

98
 string previousPageText = "<";
        string previousPageText = "<";99

 /**//// <summary>
        /**//// <summary>100
 /// 上一页链接显示的字符
        /// 上一页链接显示的字符101
 /// </summary>
        /// </summary>102
 public string PreviousPageText
        public string PreviousPageText103

 
         {
{104

 get
            get  { return previousPageText; }
{ return previousPageText; }105

 set
            set  { previousPageText = value; }
{ previousPageText = value; }106
 }
        }107

108
 string nextPageText = ">";
        string nextPageText = ">";109

 /**//// <summary>
        /**//// <summary>110
 /// 下一页链接显示的字符.默认">"
        /// 下一页链接显示的字符.默认">"111
 /// </summary>
        /// </summary>112
 public string NextPageText
        public string NextPageText113

 
         {
{114

 get
            get  { return nextPageText; }
{ return nextPageText; }115

 set
            set  { nextPageText = value; }
{ nextPageText = value; }116
 }
        }117

118

 /**//// <summary>
        /**//// <summary>119
 /// 当前页码
        /// 当前页码120
 /// </summary>
        /// </summary>121
 public virtual int PageIndex
        public virtual int PageIndex122

 
         {
{123
 get
            get124

 
             {
{125
 HttpContext context = HttpContext.Current;
                HttpContext context = HttpContext.Current;126

127
 if (Page.IsPostBack && ViewState["PageIndex"] != null)
                if (Page.IsPostBack && ViewState["PageIndex"] != null)128

 
                 {
{129
 _PageIndex = (int)ViewState["PageIndex"];
                    _PageIndex = (int)ViewState["PageIndex"];130
 }
                }131
 else
                else132

 
                 {
{133
 int.TryParse(Page.Request.QueryString["pageindex"], out this._PageIndex);
                    int.TryParse(Page.Request.QueryString["pageindex"], out this._PageIndex);134
 if (this._PageIndex == 0)
                    if (this._PageIndex == 0)135
 this._PageIndex = 1;
                        this._PageIndex = 1;136
 }
                }137

138
 if (_PageIndex < 0)
                if (_PageIndex < 0)139
 return 0;
                    return 0;140
 else
                else141
 return _PageIndex;
                    return _PageIndex;142
 }
            }143
 set
            set144

 
             {
{145
 ViewState["PageIndex"] = value;
                ViewState["PageIndex"] = value;146
 _PageIndex = value;
                _PageIndex = value;147
 }
            }148
 }
        }149

150

 /**//// <summary>
        /**//// <summary>151
 /// 一页显示的数据条数
        /// 一页显示的数据条数152
 /// </summary>
        /// </summary>153
 public virtual int PageSize
        public virtual int PageSize154

 
         {
{155
 get
            get156

 
             {
{157
 int pageSize = Convert.ToInt32(ViewState["PageSize"]);
                int pageSize = Convert.ToInt32(ViewState["PageSize"]);158
 if (pageSize == 0) return 10;
                if (pageSize == 0) return 10;159
 return pageSize;
                return pageSize;160
 }
            }161
 set
            set162

 
             {
{163
 ViewState["PageSize"] = value;
                ViewState["PageSize"] = value;164
 }
            }165
 }
        }166

167

 /**//// <summary>
       /**//// <summary>168
 /// 总记录数
       /// 总记录数169
 /// </summary>
       /// </summary>170
 public int TotalRecord
        public int TotalRecord171

 
         {
{172
 get
            get173

 
             {
{174
 return Convert.ToInt32(ViewState["TotalRecords"]);
                return Convert.ToInt32(ViewState["TotalRecords"]);175
 }
            }176
 set
            set177

 
             {
{178
 ViewState["TotalRecords"] = value;
                ViewState["TotalRecords"] = value;179
 }
            }180
 }
        }181

 /**//// <summary>
        /**//// <summary>182
 /// 生成指定页码的链接地址
        /// 生成指定页码的链接地址183
 /// </summary>
        /// </summary>184
 /// <param name="pageIndex"></param>
        /// <param name="pageIndex"></param>185
 /// <returns></returns>
        /// <returns></returns>186
 protected virtual string CreatePagerURL(string pageIndex)
        protected virtual string CreatePagerURL(string pageIndex)187

 
         {
{188
 HttpContext context = HttpContext.Current;
            HttpContext context = HttpContext.Current;189
 if (context.Request.Url.AbsoluteUri.IndexOf("?") == -1)
            if (context.Request.Url.AbsoluteUri.IndexOf("?") == -1)190

 
             {
{191
 return context.Request.Url.AbsoluteUri.ToString() + "?PageIndex=" + pageIndex;
                return context.Request.Url.AbsoluteUri.ToString() + "?PageIndex=" + pageIndex;192
 }
            }193
 else
            else194

 
             {
{195
 if (context.Request.Url.AbsoluteUri.ToLower().IndexOf("pageindex=") == -1)
                if (context.Request.Url.AbsoluteUri.ToLower().IndexOf("pageindex=") == -1)196
 return context.Request.Url.AbsoluteUri.ToString() + "&PageIndex=" + pageIndex;
                    return context.Request.Url.AbsoluteUri.ToString() + "&PageIndex=" + pageIndex;197
 else
                else198

 
                 {
{199
 return System.Text.RegularExpressions.Regex.Replace(context.Request.Url.AbsoluteUri.ToLower().ToString(), @"pageindex=(\d+\.?\d*|\.\d+)", "PageIndex=" + pageIndex);
                    return System.Text.RegularExpressions.Regex.Replace(context.Request.Url.AbsoluteUri.ToLower().ToString(), @"pageindex=(\d+\.?\d*|\.\d+)", "PageIndex=" + pageIndex);200
 }
                }201
 }
            }202
 }
        }203

204

 /**//// <summary>
        /**//// <summary>205
 /// 总页数
        /// 总页数206
 /// </summary>
        /// </summary>207
 protected int TotalPage
        protected int TotalPage208

 
         {
{209

 get
            get  { return this.CalculateTotalPages(); }
{ return this.CalculateTotalPages(); }210
 }
        }211

 /**//// <summary>
        /**//// <summary>212
 /// 样式
        /// 样式213
 /// </summary>
        /// </summary>214
 public string StyleName
        public string StyleName215

 
         {
{216

 set
            set  { _StyleName = value; }
{ _StyleName = value; }217

 get
            get  { return _StyleName; }
{ return _StyleName; }218
 }
        }219

 /**//// <summary>
        /**//// <summary>220
 /// 对齐方式
        /// 对齐方式221
 /// </summary>
        /// </summary>222
 public Align HAlign
        public Align HAlign223

 
         {
{224

 set
            set  { _Align = value; }
{ _Align = value; }225
 }
        }226

 /**//// <summary>
        /**//// <summary>227
 /// 显示页码输入框
        /// 显示页码输入框228
 /// </summary>
        /// </summary>229
 public bool ShowTextBox
        public bool ShowTextBox230

 
         {
{231

 get
            get  { return showTextBox; }
{ return showTextBox; }232

 set
            set  { showTextBox = value; }
{ showTextBox = value; }233
 }
        }234

235
 protected override void CreateChildControls()
        protected override void CreateChildControls()236

 
         {
{237
 Controls.Clear();
            Controls.Clear();238
 AddPageLinks();
            AddPageLinks();239
 AddPreviousNextLinks();
            AddPreviousNextLinks();240
 AddFirstLastLinks();
            AddFirstLastLinks();241
 AddCustomPager();
            AddCustomPager();242
 Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "customPager", GetScripts(), true);
            Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "customPager", GetScripts(), true);243
 }
        }244
 String GetScripts()
        String GetScripts()245

 
         {
{246
 StringBuilder sb = new StringBuilder();
            StringBuilder sb = new StringBuilder();247
 sb.Append(@"
            sb.Append(@"248
 function xiaokui_pager_go(){
                function xiaokui_pager_go(){249
 var n=event.srcElement;
                    var n=event.srcElement;250
 if(event.keyCode==13)
                    if(event.keyCode==13)251
 {
                    {252
 var strUrl=location.href.toLowerCase();
                        var strUrl=location.href.toLowerCase();253
 strUrl=strUrl.replace(/(\&)?pageindex=\d+/gi,'');
                        strUrl=strUrl.replace(/(\&)?pageindex=\d+/gi,'');254
 if(location.search=='')
                        if(location.search=='')255
 strUrl=strUrl+'?pageindex='+n.value;
                            strUrl=strUrl+'?pageindex='+n.value;256
 else
                        else257
 strUrl=strUrl+'&pageindex='+n.value;
                            strUrl=strUrl+'&pageindex='+n.value;258
 strUrl=strUrl.replace('?&','?');
                        strUrl=strUrl.replace('?&','?');259
 location.href=strUrl;
                        location.href=strUrl;260
 return false;
                        return false;261
 }
                     }262
 }");
                }");263
 return sb.ToString();
            return sb.ToString();264
 }
        }265

266
 void AddCustomPager()
        void AddCustomPager()267

 
         {
{268
 txtCustom = new TextBox();
            txtCustom = new TextBox();269
 txtCustom.ID = "txtCustom";
            txtCustom.ID = "txtCustom";270
 txtCustom.EnableViewState = false;
            txtCustom.EnableViewState = false;271
 txtCustom.Attributes.Add("onkeydown", "return xiaokui_pager_go();");
            txtCustom.Attributes.Add("onkeydown", "return xiaokui_pager_go();");272
 txtCustom.Attributes.Add("onkeyup", "this.value=this.value.replace(/[^0-9]/gi,'');");
            txtCustom.Attributes.Add("onkeyup", "this.value=this.value.replace(/[^0-9]/gi,'');");273
 Controls.Add(txtCustom);
            Controls.Add(txtCustom);274
 }
        }275
 protected override void OnInit(EventArgs e)
        protected override void OnInit(EventArgs e)276

 
         {
{277
 base.OnInit(e);
            base.OnInit(e);278
 AddStyle();
            AddStyle();279
 }
        }280
 protected override void  OnLoad(EventArgs e)
        protected override void  OnLoad(EventArgs e)281

 
         {
{282
 base.OnInit(e);
              base.OnInit(e);283
 if (this.Context.Request["pagerstylename"] != null)
             if (this.Context.Request["pagerstylename"] != null)284

 
              {
{285
 Assembly executingAssembly = Assembly.GetExecutingAssembly();
                 Assembly executingAssembly = Assembly.GetExecutingAssembly();286
 Stream stream = executingAssembly.GetManifestResourceStream("Bqrm." + StyleName + ".css");
                 Stream stream = executingAssembly.GetManifestResourceStream("Bqrm." + StyleName + ".css");287
 stream.Position = 0L;
                 stream.Position = 0L;288
 string script = new StreamReader(stream).ReadToEnd();
                 string script = new StreamReader(stream).ReadToEnd();289
 Page.Response.Write(script);
                 Page.Response.Write(script);290
 Page.Response.End();
                 Page.Response.End();291
 }
             }292
 }
        }293

294
 protected void AddStyle()
        protected void AddStyle()295

 
         {
{296
 string str2 = this.Context.Request.Url.ToString();
            string str2 = this.Context.Request.Url.ToString();297
 str2 = str2 + ((str2.IndexOf("?") >= 0) ? "&" : "?");
            str2 = str2 + ((str2.IndexOf("?") >= 0) ? "&" : "?");298
 string s = StyleName.ToLower();
            string s = StyleName.ToLower();299
 if (s == "basepager" || s == "coolpager" || s == "discuzpager" || s == "smallpager")
            if (s == "basepager" || s == "coolpager" || s == "discuzpager" || s == "smallpager")300

 
             {
{301
 try
                try302

 
                 {
{303
 Page.Header.Controls.Add(new LiteralControl("<link rel=\"stylesheet\" href=\"" + str2 + "PagerStyleName=" + StyleName + "\" type=\"text/css\" />"));
                    Page.Header.Controls.Add(new LiteralControl("<link rel=\"stylesheet\" href=\"" + str2 + "PagerStyleName=" + StyleName + "\" type=\"text/css\" />"));304
 }
                }305
 catch
                catch306

 
                 {
{307
 Page.Response.Write("<link rel=\"stylesheet\" href=\"" + str2 + "PagerStyleName=" + StyleName + "\" type=\"text/css\" />");
                    Page.Response.Write("<link rel=\"stylesheet\" href=\"" + str2 + "PagerStyleName=" + StyleName + "\" type=\"text/css\" />");308
 }
                }309
 }
            }310
 }
        }311

312
 protected override void Render(HtmlTextWriter writer)
        protected override void Render(HtmlTextWriter writer) 313

 
         {
{314
 writer.Write("<div id=\"" + this.ClientID + "\" class=\"" + this._StyleName + " " + this._Align + "\">");
            writer.Write("<div id=\"" + this.ClientID + "\" class=\"" + this._StyleName + " " + this._Align + "\">");315
 int totalPages = CalculateTotalPages();
            int totalPages = CalculateTotalPages();316

317
 if (totalPages <= 1)
            if (totalPages <= 1)318
 return;
                return;319

320
 if (ShowCurrentPage)
            if (ShowCurrentPage)321
 RenderCurrentPage(writer);
                RenderCurrentPage(writer);322

323
 AddAttributesToRender(writer);
            AddAttributesToRender(writer);324

325
 writer.AddAttribute(HtmlTextWriterAttribute.Class, this.CssClass, false);
            writer.AddAttribute(HtmlTextWriterAttribute.Class, this.CssClass, false);326
 RenderFirst(writer);
            RenderFirst(writer);327

328
 RenderPrevious(writer);
            RenderPrevious(writer);329
 
            330
 RenderPagingButtons(writer);
            RenderPagingButtons(writer);331

332
 RenderNext(writer);
            RenderNext(writer);333

334
 RenderLast(writer);
            RenderLast(writer);335

336
 RenderCustom(writer);
            RenderCustom(writer);337

338
 writer.Write("</div>");
            writer.Write("</div>");339

340
 }
        }341
 void RenderCustom(HtmlTextWriter writer)
        void RenderCustom(HtmlTextWriter writer)342

 
         {
{343
 writer.Write("    GO:");
            writer.Write("    GO:");344
 txtCustom.RenderControl(writer);
            txtCustom.RenderControl(writer);345
 }
        }346

347
 void RenderCurrentPage(HtmlTextWriter writer)
        void RenderCurrentPage(HtmlTextWriter writer)348

 
         {
{349
 writer.Write(String.Format(preString, StyleName, "_total"));
            writer.Write(String.Format(preString, StyleName, "_total"));350
 writer.Write(string.Format(this.CurrentPageStringFormat, this.PageIndex, this.CalculateTotalPages(), this.TotalRecord));
            writer.Write(string.Format(this.CurrentPageStringFormat, this.PageIndex, this.CalculateTotalPages(), this.TotalRecord));351
 writer.Write(lastString);
            writer.Write(lastString);352
 }
        }353

354
 void RenderFirst(HtmlTextWriter writer)
        void RenderFirst(HtmlTextWriter writer) 355

 
         {
{356
 int totalPages = CalculateTotalPages();
            int totalPages = CalculateTotalPages();357

358
 if ((PageIndex >= 3) && (totalPages > 5))
            if ((PageIndex >= 3) && (totalPages > 5)) 359

 
             {
{360
 writer.Write(String.Format(preString,this.StyleName,"first"));
                writer.Write(String.Format(preString,this.StyleName,"first"));361
 firstLink.RenderControl(writer);
                firstLink.RenderControl(writer);362
 writer.Write(lastString);
                writer.Write(lastString);363
 }
            }364
 }
        }365

366
 void RenderLast(HtmlTextWriter writer)
        void RenderLast(HtmlTextWriter writer) 367

 
         {
{368
 int totalPages = CalculateTotalPages();
            int totalPages = CalculateTotalPages();369

370
 if (((PageIndex + 3) < totalPages) && (totalPages > 5))
            if (((PageIndex + 3) < totalPages) && (totalPages > 5)) 371

 
             {
{372
 writer.Write(String.Format(preString,this.StyleName,"last"));
                writer.Write(String.Format(preString,this.StyleName,"last"));373
 lastLink.RenderControl(writer);
                lastLink.RenderControl(writer);374
 writer.Write(lastString);
                writer.Write(lastString);375
 }
            }376
 }
        }377

378
 void RenderPrevious(HtmlTextWriter writer)
        void RenderPrevious(HtmlTextWriter writer) 379

 
         {
{380
 Literal l;
            Literal l;381

382
 if (HasPrevious)
            if (HasPrevious) 383

 
             {
{384
 writer.Write(String.Format(preString,this.StyleName,"pre"));
                writer.Write(String.Format(preString,this.StyleName,"pre"));385
 previousLink.RenderControl(writer);
                previousLink.RenderControl(writer);386
 writer.Write(lastString);
                writer.Write(lastString);387
 }
            }388
 }
        }389

390
 void RenderNext(HtmlTextWriter writer)
        void RenderNext(HtmlTextWriter writer) 391

 
         {
{392
 if (HasNext)
            if (HasNext) 393

 
             {
{394
 writer.Write(String.Format(preString,this.StyleName,"next"));
                writer.Write(String.Format(preString,this.StyleName,"next"));395
 nextLink.RenderControl(writer);
                nextLink.RenderControl(writer);396
 writer.Write(lastString);
                writer.Write(lastString);397
 }
            }398
 }
        }399

400
 void RenderButtonRange(int start, int end, HtmlTextWriter writer)
        void RenderButtonRange(int start, int end, HtmlTextWriter writer) 401

 
         {
{402
 for (int i = start; i < end; i++)
            for (int i = start; i < end; i++) 403

 
             {
{404
 if (PageIndex == i+1)
                if (PageIndex == i+1) 405

 
                 {
{406
 writer.Write(String.Format(currentPageString,this.StyleName,(i+1).ToString()));
                    writer.Write(String.Format(currentPageString,this.StyleName,(i+1).ToString()));407
 }
                } 408
 else
                else 409

 
                 {
{410
 writer.Write(String.Format(preString,this.StyleName,"number"));
                    writer.Write(String.Format(preString,this.StyleName,"number"));411
 pagingHyperLinks[i].RenderControl(writer);
                    pagingHyperLinks[i].RenderControl(writer);412
 writer.Write(lastString);
                    writer.Write(lastString);413
 }
                }414
 }
            }415
 }
        }416

417
 void RenderPagingButtons(HtmlTextWriter writer)
        void RenderPagingButtons(HtmlTextWriter writer) 418

 
         {
{419
 int totalPages;
            int totalPages;420

421
 totalPages = CalculateTotalPages();
            totalPages = CalculateTotalPages();422

423
 if ( totalPages <= 5)
            if ( totalPages <= 5) 424

 
             {
{425
 RenderButtonRange(0, totalPages, writer);
                RenderButtonRange(0, totalPages, writer);426
 }
            } 427
 else
            else 428

 
             {
{429
 int lowerBound = (PageIndex - 3);
                int lowerBound = (PageIndex - 3);430
 int upperBound = (PageIndex + 2);
                int upperBound = (PageIndex + 2);431

432
 if (lowerBound <= 0)
                if (lowerBound <= 0)433

 
                 {
{434
 lowerBound = 0;
                    lowerBound = 0;435
 upperBound = 5;
                    upperBound = 5;436
 }
                }437

438
 if (PageIndex < (totalPages - 2))
                if (PageIndex < (totalPages - 2))439
 RenderButtonRange(lowerBound, upperBound, writer);
                    RenderButtonRange(lowerBound, upperBound, writer);440

441
 else if (PageIndex >= (totalPages - 2))
                else if (PageIndex >= (totalPages - 2))442
 RenderButtonRange((totalPages - 5), totalPages, writer);
                    RenderButtonRange((totalPages - 5), totalPages, writer);443
 }
            }444
 }
        }445

446
 void AddPageLinks()
        void AddPageLinks() 447

 
         {
{448
 pagingHyperLinks = new HyperLink[CalculateTotalPages()];
            pagingHyperLinks = new HyperLink[CalculateTotalPages()];449

450
 for (int i = 0; i < pagingHyperLinks.Length; i++)
            for (int i = 0; i < pagingHyperLinks.Length; i++) 451

 
             {
{452
 pagingHyperLinks[i] = new HyperLink();
                pagingHyperLinks[i] = new HyperLink();453
 pagingHyperLinks[i].EnableViewState = false;
                pagingHyperLinks[i].EnableViewState = false;454
 pagingHyperLinks[i].Text = (i + 1).ToString();
                pagingHyperLinks[i].Text = (i + 1).ToString();455
 pagingHyperLinks[i].ID = (i + 1).ToString();
                pagingHyperLinks[i].ID = (i + 1).ToString();456
 pagingHyperLinks[i].NavigateUrl = CreatePagerURL((i + 1).ToString());
                pagingHyperLinks[i].NavigateUrl = CreatePagerURL((i + 1).ToString());457
 Controls.Add(pagingHyperLinks[i]);
                Controls.Add(pagingHyperLinks[i]);458
 }
            }459
 }
        }460

461
 void AddFirstLastLinks()
        void AddFirstLastLinks() 462

 
         {
{463
 int start = 1;
            int start = 1;464
 firstLink = new HyperLink();
            firstLink = new HyperLink();465
 firstLink.ID = "First";
            firstLink.ID = "First";466
 firstLink.Text = this.FirstPageText;
            firstLink.Text = this.FirstPageText;467
 firstLink.NavigateUrl = CreatePagerURL(start.ToString());
            firstLink.NavigateUrl = CreatePagerURL(start.ToString());468
 Controls.Add(firstLink);
            Controls.Add(firstLink);469

470
 int last = CalculateTotalPages();
            int last = CalculateTotalPages();471
 lastLink = new HyperLink();
            lastLink = new HyperLink();472
 lastLink.ID = "Last";
            lastLink.ID = "Last";473
 lastLink.Text = this.LastPageText;
            lastLink.Text = this.LastPageText;474
 lastLink.NavigateUrl = CreatePagerURL(last.ToString());
            lastLink.NavigateUrl = CreatePagerURL(last.ToString());475
 Controls.Add(lastLink);
            Controls.Add(lastLink);476
 }
        }477

478
 void AddPreviousNextLinks()
        void AddPreviousNextLinks() 479

 
         {
{480
 int previous;
            int previous;481
 
            482
 if (this.PageIndex < 2)
            if (this.PageIndex < 2)483
 previous = 1;
                previous = 1;484
 else
            else485
 previous = this.PageIndex-1;
                previous = this.PageIndex-1;486

487
 previousLink = new HyperLink();
            previousLink = new HyperLink();488
 previousLink.ID = "Prev";
            previousLink.ID = "Prev";489
 previousLink.Text = this.PreviousPageText;
            previousLink.Text = this.PreviousPageText;490
 previousLink.NavigateUrl = CreatePagerURL(previous.ToString());
            previousLink.NavigateUrl = CreatePagerURL(previous.ToString());491
 Controls.Add(previousLink);
            Controls.Add(previousLink);492

493
 int next = this.PageIndex + 1;
            int next = this.PageIndex + 1;494
 nextLink = new HyperLink();
            nextLink = new HyperLink();495
 nextLink.ID = "Next";
            nextLink.ID = "Next";496
 nextLink.Text = this.NextPageText;
            nextLink.Text = this.NextPageText;497
 nextLink.NavigateUrl = CreatePagerURL(next.ToString());
            nextLink.NavigateUrl = CreatePagerURL(next.ToString());498
 Controls.Add(nextLink);
            Controls.Add(nextLink);499
 }
        }500
 
        501

 /**//// <summary>
        /**//// <summary>502
 /// Override how this control handles its controls collection
        /// Override how this control handles its controls collection503
 /// </summary>
        /// </summary>504
 public override ControlCollection Controls
        public override ControlCollection Controls505

 
         {
{506
 get
            get507

 
             {
{508
 EnsureChildControls();
                EnsureChildControls();509
 return base.Controls;
                return base.Controls;510
 }
            }511

512
 }
        }513

514
 private bool HasPrevious
        private bool HasPrevious 515

 
         {
{516
 get
            get 517

 
             {
{518
 if (PageIndex > 0)
                if (PageIndex > 0)519
 return true;
                    return true;520

521
 return false;
                return false;522
 }
            }523
 }
        }524

525
 private bool HasNext
        private bool HasNext 526

 
         {
{527
 get
            get 528

 
             {
{529
 if (PageIndex + 1 < CalculateTotalPages() )
                if (PageIndex + 1 < CalculateTotalPages() )530
 return true;
                    return true;531

532
 return false;
                return false;533
 }
            }534
 }
        }535

536

 /**//// <summary>
        /**//// <summary>537
 /// 计算总页数
        /// 计算总页数538
 /// </summary>
        /// </summary>539
 ///
        /// 540
 public virtual int CalculateTotalPages()
        public virtual int CalculateTotalPages() 541

 
         {
{542
 int totalPagesAvailable;
            int totalPagesAvailable;543

544
 if (TotalRecord == 0)
            if (TotalRecord == 0)545
 return 0;
                return 0;546

547
 totalPagesAvailable = TotalRecord / PageSize;
            totalPagesAvailable = TotalRecord / PageSize;548

549
 if ((TotalRecord % PageSize) > 0)
            if ((TotalRecord % PageSize) > 0)550
 totalPagesAvailable++;
                totalPagesAvailable++;551

552
 return totalPagesAvailable;
            return totalPagesAvailable;553
 }
        }554

555
 string currentPageStringFormat = "当前页{0}/{1} 共有{2}条记录";// = "Page {0} of {1} ({2} records)  -  ";
        string currentPageStringFormat = "当前页{0}/{1} 共有{2}条记录";// = "Page {0} of {1} ({2} records)  -  ";556
 public string CurrentPageStringFormat
        public string CurrentPageStringFormat557

 
         {
{558

 get
            get  { return currentPageStringFormat; }
{ return currentPageStringFormat; }559

 set
            set  { currentPageStringFormat = value; }
{ currentPageStringFormat = value; }560
 }
        }561
 }
    }562
 }
}563

如果有比我还懒的人,可以直接下载下面的DLL:
/Files/bqrm/BqrmPager.rar
 
                    
                
 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号