技术客栈

收获源自分享

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

页码导航,先看显示效果:

算法要求:

1、页数小于等于1时不显示;

2、页数大于10时,自动缩短。

 

具体代码如下:

/// <summary>
        /// 获取分页导航
        /// </summary>
        /// <param name="intPageIndex">页码</param>
        /// <param name="intPageCount">页数</param>
        /// <param name="strUrl">链接</param>
        /// <returns>HTML代码</returns>
        private string GePageNavgation(int intPageIndex, int intPageCount, string strUrl)
        {
            StringBuilder sb = new StringBuilder("<div class=\"div_pagenavgation\">");
            
            if (intPageCount > 1)
            {
                //页码显示
                if (intPageIndex == 1)
                {
                    sb.Append("<span class=\"disabled\"> <  上一页</span>");
                }
                else if (intPageIndex > 1)
                {
                    sb.Append("<a href=\"" + strUrl + (intPageIndex - 1).ToString() + "\"><  上一页</a>");
                }
                bool Dot1 = false, Dot2 = false;
                for (int i = 1; i <= intPageCount; i++)
                {
                    if (i == intPageIndex)
                    {
                        sb.Append("<span class=\"current\">" + intPageIndex.ToString() + "</span>");
                        continue;
                    }
                    if (i <= 3)
                    {
                        sb.Append("<a href=\"" + strUrl + i.ToString() + "\">" + i.ToString() + "</a>");
                        continue;
                    }
                    if (intPageIndex > 7)
                    {
                        if (!Dot1)
                        {
                            sb.Append("<span class=\"dotted\">...</span>");
                            Dot1 = true;
                        }
                    }
                    if (i == intPageIndex - 3)
                    {
                        sb.Append("<a href=\"" + strUrl + i.ToString() + "\">" + i.ToString() + "</a>");
                        continue;
                    }
                    if (i == intPageIndex - 2)
                    {
                        sb.Append("<a href=\"" + strUrl + i.ToString() + "\">" + i.ToString() + "</a>");
                        continue;
                    }
                    if (i == intPageIndex - 1)
                    {
                        sb.Append("<a href=\"" + strUrl + i.ToString() + "\">" + i.ToString() + "</a>");
                        continue;
                    }
                    if (i == intPageIndex + 1)
                    {
                        sb.Append("<a href=\"" + strUrl + i.ToString() + "\">" + i.ToString() + "</a>");
                        continue;
                    }
                    if (i == intPageIndex + 2)
                    {
                        sb.Append("<a href=\"" + strUrl + i.ToString() + "\">" + i.ToString() + "</a>");
                        continue;
                    }
                    if (i == intPageIndex + 3)
                    {
                        sb.Append("<a href=\"" + strUrl + i.ToString() + "\">" + i.ToString() + "</a>");
                        continue;
                    }
                    if ((intPageCount - intPageIndex) > 6 && i > intPageIndex + 3)
                    {
                        if (!Dot2)
                        {
                            sb.Append("<span class=\"dotted\">...</span>");
                            Dot2 = true;
                        }
                    }
                    if (i > intPageCount - 3)
                    {

                        sb.Append("<a href=\"" + strUrl + i.ToString() + "\">" + i.ToString() + "</a>");
                        continue;
                    }
                }
                if (intPageIndex == intPageCount)
                {
                    sb.Append("<span class=\"disabled\">下一页  ></span>");
                }
                else if (intPageIndex + 1 <= intPageCount)
                {
                    sb.Append("<a href=\"" + strUrl + (intPageIndex + 1).ToString() + "\">下一页  ></a>");
                }
            }
            sb.Append("</div>");
            return sb.ToString();
        }

CSS样式:

.div_pagenavgation{
    margin-top:5px;
    line-height:20px;
    float:right;
}


.div_pagenavgation a{
    float:left;
    text-decoration:none;
    color:#06F;
    margin-left:5px;
    padding-left:5px;
    padding-right:5px;
    height:20px;
    text-align:center;
    display:block;
    border:1px #CCC solid;
}

.div_pagenavgation .dotted{
    float:left;
    
}

.div_pagenavgation .current{
    float:left;
    margin-left:5px;
    padding-left:5px;
    padding-right:5px;
    height:20px;
    text-align:center;
    display:block;
    border:1px #CCC solid ;
    background-color:#0080C0;
    color:#FFF;
}

.div_pagenavgation .disabled{
    float:left;
    margin-left:5px;
    padding-left:5px;
    padding-right:5px;
    height:20px;
    text-align:center;
    display:block;
    border:1px #CCC solid;
    color:#CCC;
}

 

产生的HTML如下:

<div class="div_pagenavgation">
<a href="?m=log&page=11"><  上一页</a>
<a href="?m=log&page=1">1</a>
<a href="?m=log&page=2">2</a>
<a href="?m=log&page=3">3</a>
<span class="dotted">...</span>
<a href="?m=log&page=9">9</a>
<a href="?m=log&page=10">10</a>
<a href="?m=log&page=11">11</a>
<span class="current">12</span>
<a href="?m=log&page=13">13</a>
<a href="?m=log&page=14">14</a>
<a href="?m=log&page=15">15</a>
<span class="dotted">...</span>
<a href="?m=log&page=27">27</a>
<a href="?m=log&page=28">28</a>
<a href="?m=log&page=29">29</a>
<a href="?m=log&page=13">下一页  ></a>
</div>

 

 

说明:很久前赶工完成,基本能够实现要求,没有经过仔细优化,谁优化了再回复看看!

 

 

 

 

posted on 2012-12-14 17:58  深海苍狼  阅读(1215)  评论(0编辑  收藏  举报