C#页码导航显示及算法实现代码

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

C#页码导航显示及算法实现代码

  算法要求

  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>

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