View Code
 

using System;
using System.Web;
using System.Text;

/// <summary>
/// Summary description for PageHelper
/// </summary>
public  class PageHelper
{
    
/// <summary>
    
/// 根据当前页码检查分页要显示那一段的分页页码,返回当前页面要显示的第一个页码
    
/// </summary>
    
/// <param name="curPage">当前页码</param>
    
/// <returns></returns>
    private  int CheckPage(int curPage)
    {
        
string curpage_str = curPage.ToString();
        
int FirstpageChart = 0;
        
if (curpage_str.Length == 1)
        {
            
return 1;
        }
        
else
        {
            
string tml = curpage_str.Substring(0, curpage_str.Length - 1);
            FirstpageChart 
= Convert.ToInt32(tml);
            
/**/
            
/*如果当前是第十页(或二十页)就会有这些情况,本来要到前十页的却到了十到二十页
             * 当取得的页码第一位的值乘十后等于当前页码,就把取得的页码第一位减一后乘十返回
             * 否则就返回取得的页码第一位的值乘十的值
             
*/
            
return FirstpageChart * 10 == curPage ? (curPage - 9) : (FirstpageChart * 10 + 1);
        }
    }
    
/// <summary>
    
/// 生成页面字符
    
/// </summary>
    
/// <param name="countPage">总页数</param>
    
/// <param name="curPage">当前页</param>
    
/// <param name="url">页面url地址如“xxx.aspx”</param>
    
/// <returns></returns>
    public string HtmlPage(int curPage, int countPage, string url, string paramName)
    {
        StringBuilder htm 
= new StringBuilder();

        
int lastpage = CheckPage(curPage);

        
int Num = lastpage + 9;

        
if (Num <= countPage)
        {
            
for (int i = 0; i < 10; i++)
            {
                htm.AppendFormat(
"{0}", Format(lastpage + i, curPage, url, paramName));
            }
        }
        
else if (Num > countPage)
        {
            
int Count = countPage - (lastpage - 1* 10;

            
for (int i = 0; i < Count; i++)
            {
                htm.AppendFormat(
"{0}", Format(lastpage + i, curPage, url, paramName));
            }
        }
        
return htm.ToString();
    }
    
/// <summary>
    
/// 格式化页码
    
/// </summary>
    
/// <param name="i">页码</param>
    
/// <param name="curPage">当前页</param>
    
/// <param name="url">页面url地址如“xxx.aspx”</param>
    
/// <param name="paramName">参数名称</param>
    
/// <returns></returns>
    protected virtual string Format(int i, int curPage, string url, string paramName)
    {
        
return curPage == i ? string.Format("{0}&nbsp;", i) : string.Format("<a href='{0}?{1}={2}'>{3}</a>&nbsp;",
            url, paramName, i, i);
    }

}
 

 

posted on 2011-06-24 11:11  小成  阅读(345)  评论(0编辑  收藏  举报