现在的位置: 首页 > 综合 > 正文

一步步打造自己的分页控件–3

2012年02月21日 ⁄ 综合 ⁄ 共 10389字 ⁄ 字号 评论关闭

仔细查看大型网站51aspx,上面的分页静态代码,发现类似下面的结构

1  <div class=green> 
2 <href="?flag=first"><span >First</span></a>
3 <href="?flag=pre"><span>Pre</span></a>
4 <href="?pager=1"><span class=current>1</span></a>
5 <href="?pager=2"><span>2</span></a>
6 <href="?pager=3"><span>3</span></a>
7 <href="?pager=4"><span>4</span></a>
8 <href="?pager=5"><span>5</span></a>  
9 <href="#"><span>……</span></a> 
10 <href="?flag=next"><span>Next</span></a>
11 <href="?flag=last"><span>Last</span></a>
12 <input type="text" value="1"/>
13 <input  type="button" value="Go" onclick="go()"/></div>
14 </div>

仔细分析发现它们的分页方式是通过改变url传递的参数,从而动态改变当前页码,因此想到了用request.querystring方法获取传递的参数,我当时考虑到分页有文字和数字,因此用了两个参数flag,pager,然后我将代码封装在一个类文件里面,其中数字按钮是动态生成的

先看看生成分页静态代码

View Code

 1 #region 输出分页html
 2 
 3         /// <summary>
 4         /// 输出的分页html
 5         /// </summary>
 6         /// <returns>返回字符型</returns>
 7         public string rendHtml()
 8         {
 9             StringBuilder sb = new StringBuilder();
10             sb.Append("<div class=" + cssClass + ">");
11             sb.Append(" <a href=\"?flag=first\"><span >" + first + "</span></a>");
12             sb.Append("<a href=\"?flag=pre\"><span>" + pre + "</span></a>");
13             //生成第一页
14             if (pageIndex == 1)
15             {
16                 sb.Append("<a href=\"?pager=1\"><span class=" + cssCurrent + ">1</span></a>");
17                 for (int i = 1; i < numberCount; i++)
18                 {
19                     sb.Append("<a href=\"?pager=" + (i + 1) + "\"><span>" + (i + 1) + "</span></a>");
20                 }
21                 sb.Append("  <a href=\"#\"><span>……</span></a>");
22             }
23             //生成其他页
24             if (pageIndex > 1 && pageIndex < pageAll)
25             {
26                 // int first = (pageIndex - 1) * numberCount+1; 
27                 int firstpage = pageIndex;
28                 int j = 3;
29                 sb.Append("<a href=\"?pager=" + firstpage + "\"><span class=" + cssCurrent + ">" + firstpage + "</span></a>");
30 
31                 for (int i = firstpage + 1; i < firstpage + numberCount; i++)
32                 {
33                     sb.Append("<a href=\"?pager=" + i + "\"><span>" + i + "</span></a>");
34                     j = j + 1;
35                 }
36                 sb.Append("  <a href=\"#\"><span>……</span></a>");
37             }
38             if (pageIndex == pageAll)//如果为最后一页
39             {
40                 int firstpage = pageIndex - 4;
41                 int j = 3;
42                 sb.Append("<a href=\"?pager=" + firstpage + "\"><span class=" + cssCurrent + ">" + firstpage + "</span></a>");
43 
44                 for (int i = firstpage + 1; i < firstpage + numberCount; i++)
45                 {
46                     sb.Append("<a href=\"?pager=" + i + "\"><span>" + i + "</span></a>");
47                     j = j + 1;
48                 }
49                 sb.Append("  <a href=\"#\"><span>……</span></a>");
50             }
51             //生成下一页和末页
52             sb.Append(" <a href=\"?flag=next\"><span>" + next + "</span></a>");
53             sb.Append(" <a href=\"?flag=last\"><span>" + last + "</span></a>");
54             sb.Append("<input type=\"text\" value=\"1\"/>");
55             sb.Append("<input  type=\"button\" value=\"Go\" onclick=\"go()\"/>");
56             sb.Append("</div>");
57             return sb.ToString();
58         }
59 
60         #endregion

通过点击a链接改变当前的pageIndex页码

 

View Code

 1   #region 获取分页url
 2         //点击分页
 3         private int getPageIndex()
 4         {
 5             //第一次加载时
 6             if (Request.QueryString["pager"] == null && Request.QueryString["flag"] == null)
 7             {
 8                 pageIndex = 1;
 9                 return pageIndex;
10             }
11             //第二种情况首页,上一页,下一页,末页
12             if (Request.QueryString["pager"] == null && Request.QueryString["flag"] != null)
13             {
14                 flag = Request.QueryString["flag"].ToString();
15                 if (flag == "first")//首页
16                 {
17                     pageIndex = 1;
18                     return pageIndex;
19                 }
20                 if (flag == "pre")//上一页
21                 {
22                     pageIndex = pageIndex - 1;
23                     if (pageIndex > 0)
24                     {
25                         return pageIndex;
26                     }
27                     if (pageIndex <= 0)
28                     {
29                         pageIndex = 1;
30                         return pageIndex;
31                     }
32                 }
33                 if (flag == "next")//下一页
34                 {
35                     pageIndex = pageIndex + 1;
36                     if (pageIndex <= pageAll)//如果等于末页
37                     {
38                         return pageIndex;
39                     }
40                     if (pageIndex > pageAll)//如果等于末页
41                     {
42                         pageIndex = pageAll;
43                         return pageIndex;
44                     }
45                 }
46                 if (flag == "last")//末页
47                 {
48                     pageIndex = pageAll;
49                     return pageIndex;
50                 }
51             }//end 2
52             //第三种 中间页
53             if (Request.QueryString["pager"] != null && Request.QueryString["flag"] == null)
54             {
55                 pageIndex = Convert.ToInt32(Request.QueryString["pager"].ToString());
56                 if (pageIndex == 1)//第一页
57                 {
58                     return pageIndex;
59                 }
60 
61                 if (pageIndex > 1 && pageIndex <= pageAll)//中间页
62                 {
63                     return pageIndex;
64                 }
65             }
66             return pageIndex;
67             //end 3
68         }
69         #endregion

分页属性代码如下:可以改变当前div的样式类名,上一页 下一页,首页,末页,显示的数字个数

 

View Code

 1  #region 属性
 2 
 3         private int pageSize = 10;//每页大小
 4         /// <summary>
 5         /// 每页显示数量
 6         /// </summary>
 7         public int PageSize { get { return pageSize; } set { pageSize = value; } }
 8 
 9         private static int pageIndex = 1;//当前页索引
10         /// <summary>
11         /// 页索引
12         /// </summary>
13         //public static int PageIndex { get { return pageIndex; } set { pageIndex=value;} }
14         public int CurrentPageIndex { get { return getPageIndex(); } }//当前页
15 
16 
17         private int numberCount = 5;//显示的数字个数
18         /// <summary>
19         /// 每页显示数量
20         /// </summary>
21         public int NumberCount { get { return numberCount; } set { numberCount = value; } }
22 
23         private int pageAll = 1;//总页数
24         /// <summary>
25         /// 总页数
26         /// </summary>
27         public int PageAll { get { return pageAll; } set { pageAll = value; } }
28 
29         private string flag = "first";//页标记
30         private HttpRequest Request { get { return HttpContext.Current.Request; } }
31 
32         private string cssClass = "green";//div类名称
33         /// <summary>
34         /// 分页div类名
35         /// </summary>
36         public string CssClass { get { return cssClass; } set { cssClass = value; } }
37 
38         private string cssCurrent = "current";
39         /// <summary>
40         /// 点击后显示样式
41         /// </summary>
42         public string CssCurrent { get { return cssCurrent; } set { cssCurrent = value; } }
43 
44         private string first = "首页";
45         /// <summary>
46         /// 首页显示的内容
47         /// </summary>
48         public string First { get { return first; } set { first = value; } }
49 
50         private string pre = "上一页";
51         /// <summary>
52         /// 上一页显示的内容
53         /// </summary>
54         public string Pre { get { return pre; } set { pre = value; } }
55 
56         private string next = "下一页";
57         /// <summary>
58         /// 下一页显示的内容
59         /// </summary>
60         public string Next { get { return next; } set { next = value; } }
61 
62         private string last = "末页";
63         /// <summary>
64         /// 末页显示的内容
65         /// </summary>
66         public string Last { get { return last; } set { last = value; } }
67         #endregion

 

 全部分页的代码如下:

 

View Code

  1 using System;
  2 using System.Text;
  3 using System.Web;
  4 namespace netPager
  5 {
  6     /// <summary>
  7     /// 自定义分页控件
  8     /// </summary>
  9     public class lyPager
 10     {
 11         #region 属性
 12 
 13         private int pageSize = 10;//每页大小
 14         /// <summary>
 15         /// 每页显示数量
 16         /// </summary>
 17         public int PageSize { get { return pageSize; } set { pageSize = value; } }
 18 
 19         private static int pageIndex = 1;//当前页索引
 20         /// <summary>
 21         /// 页索引
 22         /// </summary>
 23         //public static int PageIndex { get { return pageIndex; } set { pageIndex=value;} }
 24         public int CurrentPageIndex { get { return getPageIndex(); } }//当前页
 25 
 26 
 27         private int numberCount = 5;//显示的数字个数
 28         /// <summary>
 29         /// 每页显示数量
 30         /// </summary>
 31         public int NumberCount { get { return numberCount; } set { numberCount = value; } }
 32 
 33         private int pageAll = 1;//总页数
 34         /// <summary>
 35         /// 总页数
 36         /// </summary>
 37         public int PageAll { get { return pageAll; } set { pageAll = value; } }
 38 
 39         private string flag = "first";//页标记
 40         private HttpRequest Request { get { return HttpContext.Current.Request; } }
 41 
 42         private string cssClass = "green";//div类名称
 43         /// <summary>
 44         /// 分页div类名
 45         /// </summary>
 46         public string CssClass { get { return cssClass; } set { cssClass = value; } }
 47 
 48         private string cssCurrent = "current";
 49         /// <summary>
 50         /// 点击后显示样式
 51         /// </summary>
 52         public string CssCurrent { get { return cssCurrent; } set { cssCurrent = value; } }
 53 
 54         private string first = "首页";
 55         /// <summary>
 56         /// 首页显示的内容
 57         /// </summary>
 58         public string First { get { return first; } set { first = value; } }
 59 
 60         private string pre = "上一页";
 61         /// <summary>
 62         /// 上一页显示的内容
 63         /// </summary>
 64         public string Pre { get { return pre; } set { pre = value; } }
 65 
 66         private string next = "下一页";
 67         /// <summary>
 68         /// 下一页显示的内容
 69         /// </summary>
 70         public string Next { get { 
【上篇】
【下篇】

抱歉!评论已关闭.