比如 当前是 0页比如 
总共5页 
0 [1] [2] [3] [4] 当前是 第 1 页 就是 [0]  1  [2]  [3]  [4] 
但是如果只有 2 页  就显示 [0] 1 
用 public string page(string pageindex,string pagecount) 来设计, 里面的变化挺多的, 请问怎样设计这个 方法呢??谢谢

解决方案 »

  1.   

    public StringBuilder GetCutPageString(int PageSize,int PageNum,int Count,string PageUrl,int num)
    {
    StringBuilder strsb=new StringBuilder();     //最终显示在div里的HTML字符
    int PageCount = 0;          //总页数 int minPage = 0;            //显示的最小页
    int maxPage = 0;            //显示的最大页
    PageCount = Convert.ToInt32(Count % PageSize == 0 ? Math.Floor(Count / PageSize) : Math.Floor(Count / PageSize) + 1);
    //VS2005里用 PageCount = Convert.ToInt32(Count % PageSize == 0 ? System.Math.Floor(Convert.ToDecimal(Count / PageSize)) : Math.Floor(Convert.ToDecimal(Count / PageSize)) + 1);
    if (PageCount == 0)
    PageCount = 1;      //如果记录条数为0,也显示一页 if (PageNum < 1)
    PageNum = 1;
    else if (PageNum > PageCount)
    PageNum = PageCount;

    #region 生成最大、最小页码 //最小页码 if (PageNum <= num+1)
    {
    minPage = 1;
    }
    else
    {
    minPage = PageNum - num;
    }
    //最大页码 if (PageNum + num > PageCount - 1)
    {
    maxPage = PageCount;
    }
    else
    {
    maxPage = PageNum + num;
    }
    #endregion
    #region JS函数
    strsb.Append(" ");//防止数据为空
    strsb.Append("<script language=\"javascript\">");
    strsb.Append("function GoPage()");
    strsb.Append("{var obj = document.getElementById('go_url');");
    //strsb.Append("var url=\""+PageUrl.Substring(0,PageUrl.LastIndexOf('=')+1)+"\"");
    strsb.Append("var url=\""+PageUrl.Substring(0,PageUrl.LastIndexOf('*')));
    strsb.Append("\"+obj.value+\"");
    strsb.Append(PageUrl.Substring(PageUrl.LastIndexOf('*')+1));
    strsb.Append("\";window.location.href=url");
    strsb.Append(";}");
    strsb.Append("</script>");
    #endregion

    #region 首页、上一页 strsb.Append("<a href=\"" + GetNewPageUrl(PageUrl, 1) + "\">");
    strsb.Append("<img src=\"images/bt_first.gif\" alt=\"首页\" border=\"0\" align=\"absmiddle\"/>");
    strsb.Append("</a>");
    if (PageNum > 1)
    {
    strsb.Append("<a href=\"" + GetNewPageUrl(PageUrl, PageNum - 1) + "\">");
    strsb.Append("<img src=\"images/bt_pre.gif\" alt=\"上一页\" border=\"0\" align=\"absmiddle\" class=\"marg_left6\"/>");
    strsb.Append("</a>");
    }
    #endregion

    #region 中间页码
    for (int i = minPage; i <= maxPage; i++)
    {
    if (i == PageNum)
    {
    strsb.Append("<span class=\"marq_left8\">" + PageNum.ToString() + "</span>");
    }
    else
    {
    strsb.Append("<a href=\"" + GetNewPageUrl(PageUrl, i) + "\"class=\"l_333_12_u marq_left8\">" + i.ToString() + "</a>");
    }
    }
    #endregion

    #region 下一页、尾页 if (PageNum < PageCount)
    {
    strsb.Append("<a href=\"" + GetNewPageUrl(PageUrl, PageNum + 1) + "\">");
    strsb.Append("<img src=\"images/bt_next.gif\" alt=\"下页\" border=\"0\" align=\"absmiddle\" class=\"marg_left6\"/>");
    strsb.Append("</a>");
    }
    strsb.Append("<a href=\"" + GetNewPageUrl(PageUrl, PageCount) + "\">");
    strsb.Append(
    "<img src=\"images/bt_last.gif\" alt=\"最后一页\" align=\"absmiddle\" border=\"0\" class=\"marg_left6 marq_right12\" /></a>");
    #endregion

    #region 跳转
    strsb.Append("转到 <select name=\"go_url\" id=\"go_url\">");
    for (int i = 1; i <= PageCount; i++)
    {
    if(i==PageNum)
    {
    strsb.Append("<option value = \"" + i.ToString() + "\" selected=\"selected\">" + i.ToString() + "</option>");
    }
    else
    {
    strsb.Append("<option value = \"" + i.ToString() + "\">" + i.ToString() + "</option>");
    }
    }
    strsb.Append("</select> 页");
    strsb.Append("<img src=\"images/bt_go.gif\" style=\"cursor:hand\" onclick=\"GoPage()\" alt=\"go\" width=\"50\" height=\"19\" border=\"0\" align=\"absmiddle\" class=\"marq_left12\" />");
    strsb.Append("");
    #endregion
    return strsb;
    }
      

  2.   

    就是想生成动态的标签
    在前台用公共变量 <%=strHTML %>public string strHTML="";
    public string page(string pageindex,string pagecount)
    {
       try{
       if(Convert.ToInt32(pagecount)>0)
       {
    for(int i=0;i<Convert.ToInt32(pagecount);i++)
    {
          if(Convert.ToInt32(pageindex)==i)
              strHTML+="<asp:linkbutton id=\"lbt1\" runat=\"server\" Text=\"" +i.tostring()+ "\" />";
          else
              strHTML+="<asp:linkbutton id=\"lbt1\" runat=\"server\" Text=\"[" +i.tostring()+ "]\" />";
    }
       }
    }
    catch
     {}
     
    }代码直接写的,就是这个意思
      

  3.   

    汗.有错误..int num 输入的是什么??谢谢..
      

  4.   

    算法如下,具体自己写吧,如总数为pagecount=80页,翻页的基数Cardinal=10页, 当前页pageindex变化
    if(Total%Cardinal>Cardinal/2)//翻页
      {  
         if(pageindex-5<0)
          {
           //应显示0 到 Cardinal页
           }
          else
           {
           //应显示pageindex-Cardinal/2 到 pageindex+(Cardinal/2)
           }
       }
    else
       { //不翻页 }