原文地址:http://www.cnblogs.com/hailibu/archive/2010/04/27/1721866.html
博客园里用的分页导航控件,我大胆地猜测应该是通过后台程序代码,然后在页面上输出html标签。我发现它与新浪的分页导航非常相像,不过后者是通过JavaScript创建分页导航。
这种分页导航有4种状态:
1、不带省略号的

2、省略号在右边

3、省略号在左边

4、省略号在两边

下面是我根据这4种状态,写出的分页导航代码,欢迎园友们多多指点^_^
CSS样式
#pager
{
font-size
:
12px
;
margin
:
25px 0
;
text-align
:
center
;
color
:
#2E6AB1
;
line-height
:
200%
;
}
#pager a
{
border
:
1px solid #9AAFE5
;
color
:
#2E6AB1
;
margin-right
:
4px
;
padding
:
2px 8px
;
text-decoration
:
none
;
}
#pager a:hover
{
border
:
1px solid #2E6AB1
;
color
:
#363636
;
}
#pager span.current
{
background-color
:
#2E6AB1
;
border
:
1px solid navy
;
color
:
#FFFFFF
;
font-weight
:
bold
;
margin-right
:
4px
;
padding
:
2px 8px
;
}
页面代码:
<
div
id
="pager_block"
>
<
div
id
='pager'
>
分页导航Html标签存放位置
</
div
>
</
div
>
程序代码:
002 | using System.Collections.Generic; |
012 | /// <param name="pageIndex">索引页码,从1开始</param> |
013 | /// <param name="pageCount">总页数</param> |
014 | /// <param name="showPageCount">显示分页个数(奇数)</param> |
015 | /// <returns></returns> |
016 | public static string Build( int pageIndex, int pageCount, int showPageCount) |
021 | StringBuilder sb = new StringBuilder(); |
023 | int span = showPageCount / 2; |
027 | if (pageCount > showPageCount + 1) |
029 | if (pageIndex <= span + 1) |
031 | from = 1; to = showPageCount; |
034 | sb.AppendFormat( "<a href='Default.aspx?page={0}'>上一页</a>" , pageIndex - 1); |
036 | sb.Append(ShowPageNavigation(pageIndex, from, to)); |
040 | sb.AppendFormat( "<a href='Default.aspx?page={0}'>{0}</a>" , pageCount); |
042 | sb.AppendFormat( "<a href='Default.aspx?page={0}'>下一页</a>" , pageIndex + 1); |
045 | else if (pageIndex >= pageCount - span) |
047 | from = pageCount + 1 - showPageCount; to = pageCount; |
049 | sb.AppendFormat( "<a href='Default.aspx?page={0}'>上一页</a>" , pageIndex - 1); |
051 | sb.Append( "<a href='Default.aspx'>1</a>" ); |
055 | sb.Append(ShowPageNavigation(pageIndex, from, to)); |
057 | if (pageIndex != pageCount) |
058 | sb.AppendFormat( "<a href='Default.aspx?page={0}'>下一页</a>" , pageIndex + 1); |
062 | from = pageIndex - span; to = pageIndex + span; |
064 | sb.AppendFormat( "<a href='Default.aspx?page={0}'>上一页</a>" , pageIndex - 1); |
066 | sb.Append( "<a href='Default.aspx'>1</a>" ); |
070 | sb.Append(ShowPageNavigation(pageIndex, from, to)); |
074 | sb.AppendFormat( "<a href='Default.aspx?page={0}'>{0}</a>" , pageCount); |
076 | sb.AppendFormat( "<a href='Default.aspx?page={0}'>下一页</a>" , pageIndex + 1); |
082 | from = 1; to = pageCount; |
085 | sb.AppendFormat( "<a href='Default.aspx?page={0}'>上一页</a>" , pageIndex - 1); |
087 | sb.Append(ShowPageNavigation(pageIndex, from, to)); |
089 | if (pageIndex != pageCount) |
090 | sb.AppendFormat( "<a href='Default.aspx?page={0}'>下一页</a>" , pageIndex + 1); |
093 | return sb.ToString(); |
096 | private static string ShowPageNavigation( int pageIndex, int from, int to) |
098 | StringBuilder sb = new StringBuilder(); |
100 | for ( int i = from; i <= to; i++) |
104 | sb.AppendFormat( "<span class='current'>{0}</span>" , i); |
108 | sb.AppendFormat( "<a href='Default.aspx?page={0}'>{0}</a>" , i); |
112 | return sb.ToString(); |