ASP.NET自定义分页程序代码

一、自定义分页类 PagerHelper

 代码如下 复制代码

 public class PagerHelper
    {
private int _pageSize = 10;
/// <summary>
/// 每页默认10条数
/// </summary>
public int pageSize
{
    get
    {
if (_pageSize < 1)
    _pageSize = 1;
return _pageSize;
    }
    set { _pageSize = value; }
}

private int _extendPage = 5;
/// <summary>
/// 每页显示分页数
/// </summary>
public int extendPage
{
    get
    {
if (_extendPage < 3)
    _extendPage = 3;
return _extendPage;
    }
    set
    {
_extendPage = value;
    }
}

private int _currentPage = 1;
/// <summary>
/// 当前页码
/// </summary>
public int currentPage
{
    get
    {
if (_currentPage < 1)
    _currentPage = 1;
if (_currentPage > totalPages)
    _currentPage = totalPages;
return _currentPage;
    }
    set
    {
_currentPage = value;
    }
}

private int _totalRows = 0;
/// <summary>
/// 总数据数
/// </summary>
public int totalRows
{
    get { return _totalRows; }
    set { _totalRows = value; }
}

/// <summary>
/// 分页时是否做urlRewriter处理
/// </summary>
private bool isRewrite
{
    get { return pageUrl.IndexOf("{0}") > 0; }
}

private string _pageUrl = "";
/// <summary>
/// 分页url
/// </summary>
public string pageUrl
{
    get { return _pageUrl; }
    set { _pageUrl = value; }
}

/// <summary>
/// 总页数
/// </summary>
private int totalPages
{
    get
    {
if ((totalRows % pageSize) == 0)
{
    return (totalRows / pageSize);
}
return (totalRows / pageSize + 1);
    }
}

/// <summary>
/// 上一页
/// </summary>
private int prevPage
{
    get
    {
int temp = currentPage - 1;
if (temp < 1)
{
    return 1;
}
return temp;
    }
}

/// <summary>
/// 下一页
/// </summary>
private int nextPage
{
    get
    {
int temp = currentPage + 1;
if (temp > totalPages)
{
    return temp;
}
return temp;
    }
}

/// <summary>
/// 获得开始显示的页码
/// </summary>
private int startPage
{
    get
    {
int _startPage = 0;
if (totalPages > extendPage)
{
    if (currentPage - (extendPage / 2) > 0)
    {
if (currentPage + (extendPage / 2) < totalPages)
{
    _startPage = currentPage - (extendPage / 2);
}
else
{
    _startPage = endPage - extendPage + 1;
}
    }
    else
    {
_startPage = 1;
    }
}
else
{
    _startPage = 1;
}
return _startPage;
    }
}

/// <summary>
/// 获取最后一个显示的页面
/// </summary>
private int endPage
{
    get
    {
int _endPage = 0;
if (totalPages > extendPage)
{
    if (currentPage - (extendPage / 2) > 0)
    {
if (currentPage + (extendPage / 2) < totalPages)
{
    _endPage = startPage + extendPage - 1;
}
else
{
    _endPage = totalPages;
}
    }
    else
    {
_endPage = extendPage;
    }
}
else
{
    _endPage = totalPages;
}
return _endPage;
    }
}

private string _HtmlDisablePrevPage = "";
/// <summary>
/// 第一页时上一页的样式
/// </summary>
public string HtmlDisablePrevPage
{
    get { return _HtmlDisablePrevPage; }
    set { _HtmlDisablePrevPage = value; }
}

private string _HtmlDisableNextPage = "";
/// <summary>
/// 最后页时下一页的样式
/// </summary>
public string HtmlDisableNextPage
{
    get { return _HtmlDisableNextPage; }
    set { _HtmlDisableNextPage = value; }
}

private string _HtmlCurOfTotalPage = "";
/// <summary>
/// 当前第几页 例如:第 2/5 页
/// </summary>
public string HtmlCurOfTotalPage
{
    get { return _HtmlCurOfTotalPage; }
    set { _HtmlCurOfTotalPage = value; }
}

private bool _bHtmlCurOfTotalPage = true;
/// <summary>
/// 当前第几页 例如:第 2/5 页
/// </summary>
public bool bHtmlCurOfTotalPage
{
    get { return _bHtmlCurOfTotalPage; }
    set { _bHtmlCurOfTotalPage = value; }
}

private string _HtmlTotalCount = "";
/// <summary>
/// 总记录数的显示形式
/// </summary>
public string HtmlTotalCount
{
    get { return _HtmlTotalCount; }
    set { _HtmlTotalCount = value; }
}

private string _HTMLMoveToPage = "";
/// <summary>
/// 跳转到的格式HTML
/// </summary>
public string HTMLMoveToPage
{
    get
    {
string strReturnHtml = string.Format(_HTMLMoveToPage, currentPage);
if (isRewrite)
{
    strReturnHtml += "<script>function GoToPage(pg){if(isNaN(pg)||pg>" + totalPages + "||pg<1){window.alert('请正确输入页码,只能为正整数!且不能大于" + totalPages + "');return false;}else{window.location.href='"+pageUrl+"'.replace('{0}',pg);return true;}}</script>";
}
else
{
    if (pageUrl.IndexOf("?") > 0)
strReturnHtml += "<script>function GoToPage(pg){if(isNaN(pg)||pg>" + totalPages + "||pg<1){window.alert('请正确输入页码,只能为正整数!且不能大于" + totalPages + "');return false;}else{window.location.href='" + pageUrl + "&pn='+pg+'';return true;}}</script>";
    else
strReturnHtml += "<script>function GoToPage(pg){if(isNaN(pg)||pg>" + totalPages + "||pg<1){window.alert('请正确输入页码,只能为正整数!且不能大于" + totalPages + "');return false;}else{window.location.href='" + pageUrl + "?pn='+pg+'';return true;}}</script>";
}
return strReturnHtml;
    }
    set
    {
_HTMLMoveToPage = value;
    }
}

private string _HtmlPrevPage = @"";
/// <summary>
/// 上一页代码
/// </summary>
public string HtmlPrevPage
{
    get
    {
if (isRewrite)
{
    if (currentPage < 2 )
    {
 return _HtmlDisablePrevPage;
    }
    else
    {
return string.Format(_HtmlPrevPage, string.Format(pageUrl, 1), string.Format(pageUrl, prevPage));
    }
}
else
{
    if (currentPage < 2)
    {
return _HtmlDisablePrevPage;
    }
    else
    {
if (pageUrl.IndexOf("?") > 0)
    return string.Format(_HtmlPrevPage, pageUrl + "&pn=1", pageUrl + string.Format("&pn={0}", prevPage));
else
    return string.Format(_HtmlPrevPage, pageUrl + "?pn=1", pageUrl + string.Format("?pn={0}", prevPage));

    }
}
    }
    set
    {
_HtmlPrevPage = value;
    }
}

private string _HtmlNextPage = @"";
/// <summary>
/// 下一页html代码
/// </summary>
public string HtmlNextPage
{
    get
    {
if (isRewrite)
{
    if (currentPage < totalPages)
    {
return string.Format(_HtmlNextPage, string.Format(pageUrl, nextPage), string.Format(pageUrl, totalPages));
    }
    else
    {
return _HtmlDisableNextPage;
    }
}
else
{
    if (currentPage < totalPages)
    {
if (pageUrl.IndexOf("?") > 0)
    return string.Format(_HtmlNextPage, pageUrl + string.Format("&pn={0}", nextPage), pageUrl + string.Format("&pn={0}", totalPages));
else
    return string.Format(_HtmlNextPage, pageUrl + string.Format("?pn={0}", nextPage), pageUrl + string.Format("?pn={0}", totalPages));

    }
    else
    {
return _HtmlDisableNextPage;
    }
}
    }
    set
    {
_HtmlNextPage = value;
    }
}

private string _HtmlCurrentPage = @"<span style=""color:Red"">{0}</span>&nbsp;";
/// <summary>
/// 当前页html代码
/// </summary>
public string HtmlCurrentPage
{
    get { return _HtmlCurrentPage; }
    set { _HtmlCurrentPage = value; }
}

private string _HtmlPageNum = "";
/// <summary>
/// 页码数的html
/// </summary>
public string HtmlPageNum
{
    get { return _HtmlPageNum; }
    set { _HtmlPageNum = value; }
}

private string _HtmlPageTag = @"<div class=""page""><ul>{0}</ul></div>";
/// <summary>
/// 用于设置分页html外面的div, span等标
/// </summary>
public string HtmlPageTag
{
    get { return _HtmlPageTag; }
    set { _HtmlPageTag = value; }
}

/// <summary>
/// 获取最终html
/// </summary>
/// <returns></returns>
public string GetHtmlPage()
{
   return GetHtmlPage(false);
}

/// <summary>
/// 获取最终html
/// </summary>
/// <returns></returns>
public string GetHtmlPage(bool bGoToPage)
{
    if (totalPages <= 0)
return "";
    StringBuilder s = new StringBuilder("");

    s.Append(HtmlPrevPage);
    for (int i = startPage; i <= endPage; i++)
    {
if (i == currentPage)
{
    s.Append(string.Format(HtmlCurrentPage, i));
}
else
{
    if (isRewrite)
    {
s.Append(string.Format(HtmlPageNum, string.Format(pageUrl, i), i));
    }
    else
    {
if (pageUrl.IndexOf("?") > 0)
    s.Append(string.Format(HtmlPageNum, string.Format(pageUrl + @"&pn={0}", i), i));
else
    s.Append(string.Format(HtmlPageNum, string.Format(pageUrl + @"?pn={0}", i), i));

    }
}
    }
    s.Append(HtmlNextPage);
    if (bGoToPage)
    {
s.Append(HTMLMoveToPage);
    }
    return string.Format(HtmlPageTag, s.ToString());
}

/// <summary>
/// 获取最终html
/// </summary>
/// <returns></returns>
public string GetHtmlNoNumsPage()
{
    if (totalPages < 0)
return "";
    StringBuilder s = new StringBuilder("");
    if (bHtmlCurOfTotalPage)
    {
if (string.IsNullOrEmpty(HtmlCurOfTotalPage))
    s.Append(string.Format(" 第 {0}/{1} 页 ", currentPage, totalPages));
else
    s.Append(string.Format(HtmlCurOfTotalPage, currentPage, totalPages));
    }
    s.Append(HtmlPrevPage);
    s.Append(HtmlNextPage);
    return string.Format(HtmlPageTag, s.ToString());
}

    }

 

二、使用实例
 

 代码如下 复制代码

public string GetHtmlPager()
{
    PagerHelper pHelper = new PagerHelper();
    pHelper.HtmlPageTag = @"<div class=""fenye""><ul>{0}</ul></div>";
    pHelper.pageUrl = url;
    pHelper.totalRows = TotalCount;
    pHelper.pageSize = pageSize;
    pHelper.extendPage = 8;
    pHelper.HtmlPrevPage = @"<li><a href=""{1}"">上一页</a></li>";
    pHelper.HtmlNextPage = @"<li><a href=""{0}"">下一页</a></li>";
    pHelper.HtmlDisablePrevPage = @"<li><span class=""nohref"">上一页</span></li>";
    pHelper.HtmlDisableNextPage = @"<li><span class=""nohref"">下一页</span></li>";
    pHelper.HtmlCurrentPage = @"<li class=""current"">{0}</li> ";
    pHelper.currentPage = pageIndex;
    pHelper.HtmlPageNum = @"<li><a href=""{0}"">{1}</a></li> ";
    return pHelper.GetHtmlPage();
}

自定义分页控件

使用:

 代码如下 复制代码
<%@ Register assembly="YSM.AspNetPager" namespace="YSM.AspNetPager" tagprefix="cc1" %>

页面注册控件,也可以在web.config中配置
1.ajax之UpdatePanel分页则把控件放到UpdatePanel里面即可(不能启用url重写和url参数分页,即跳转页面)

 代码如下 复制代码
<cc1:YsmPager ID="YsmPager1" runat="server" PageSize="10" onpagechanged="YsmPager1_PageChanged" CssClass="yahoo" CurrentPageButtonClass="current" DisabledButtonClass="disabled"></cc1:YsmPager>

CssClass:设置控件div的样式;CurrentPageButtonClass:设置当前索引页的样式;DisabledButtonClass:设置启用上一页下一页按钮时的禁用样式。
2.url重写分页需要设置UrlRewriting属性为true,Url重写规则UrlRewritePattern属性。

 代码如下 复制代码
<cc1:YsmPager ID="YsmPager2" runat="server" PageSize="10" UrlRewriting="true" UrlRewritePattern="index-{0}-[cid].html"></cc1:YsmPager>

index-{0}-[cid].html多个参数时候的使用页面使用{0}自动格式化,其他参数使用[你的参数名]进行配置。
属性介绍:
PageSize:获取或设置每页显示记录数
CurrentPageIndex:获取或设置当前页索引
RecordCount:获取或设置记录总数(必须设置值才能生成分页链接)
PageCount:获取页总数,此属性只有get
UrlPaging:是否启用Url传参方式分页(默认false)
UrlPageIndexName:"获取或设置当启用Url分页方式时,在url中表示要传递的页索引的参数的名称(默认page)。
UrlRewriting:是否启用Url重写,当为true时UrlPaging自定为true(默认false)
UrlRewritePattern:Url重写格式(默认null)
CurrentPageButtonClass:当前页按钮样式(默认null)
DisabledButtonClass:设置禁用上一页下一页按钮样式(默认null)
FirstPageText:设置第一页按钮的文本(默认1)
LastPageText:设置最后一夜按钮的文本(默认PageCount的值)
ShowJumpBox:设置是否显示跳转框(默认显示)

时间: 2024-09-25 02:33:39

ASP.NET自定义分页程序代码的相关文章

asp万用分页程序代码_应用技巧

这只是个asp小技巧类的东西,它虽然适合在每个不同文件名里调用这个函数,但是也是有前提的,下面让我们来仔细看看其中的原委. 下面这段是基本的分页代码: <% sql = "select--------省略了sql语句 Set rs=Server.Createobject("ADODB.RECORDSET") rs.Open sql, conn, 1, 1 if not rs.eof then pages = 30 '定义每页显示的记录数 rs.pageSize = pa

asp万用分页程序代码

这只是个asp小技巧类的东西,它虽然适合在每个不同文件名里调用这个函数,但是也是有前提的,下面让我们来仔细看看其中的原委. 下面这段是基本的分页代码: <% sql = "select--------省略了sql语句 Set rs=Server.Createobject("ADODB.RECORDSET") rs.Open sql, conn, 1, 1 if not rs.eof then pages = 30 '定义每页显示的记录数 rs.pageSize = pa

asp中实用分页程序代码

page=request("page") if page<>"" then p_absolutepage=cint(page) else p_absolutepage=1 end if sql="select * from [date]" set rs=server.createobject("adodb.recordset") rs.open sql,conn,1,1 p_pagesize=2 rs.pagesi

ASP关于页面和代码分离的问题

代码分离|问题|页面|代码分离     为了避免ASP程序和HTML代码混写造成维护困难的情况,本文介绍了一种方法,利用模板来分离程序和页面,使程序设计更加轻松.       在使用ASP制作一个站点的时候,常常会出现一个ASP文件中,程序代码和HTML代码混合的情况.这样子做有许多缺点:    1. 且不说编程时就要对页面布局进行设计和编排,造成代码混乱难懂,不规范:    2. 当需要改变页面外观时,你不仅要改变HTML部份,也需要改变ASP代码,不易维护.       那么,要如何才能避免

实现一个Asp.net自定义Back控件

asp.net|控件 本文讲述了如何给Web页面添加一个服务器端控件,从而将用户的浏览器重定向到该控件所指向的页面(referring page). by Juval Lowy Q:实现一个ASP.NET Back控件我想在ASP.NET页面中添加一个链接,通过它,我可以返回到它所指向的页面.不知怎样用一个服务器端控件来实现它呢?我想通过该控件返回到已访问过的页面,而并不想用浏览历史记录的方法. A:你可以用两种方法在一个Web页面上实现一个"Back"链接.第一种方法是用客户端脚本读

aspnet自定义请求-ASP.NET自定义一个请求成功发送,为什么服务器无法拿到数据

问题描述 ASP.NET自定义一个请求成功发送,为什么服务器无法拿到数据 场景:服务端套件要求客户端必须携带安全令牌,所以需要在客户端的请求报文头中植入一个安全令牌(也就是一个键值对),那么就不能使用HTML的表单进行提交,我需要自定义一个请求. 所以我用到了webrequest,代码如下: public class Handler : IHttpHandler { public void ProcessRequest (HttpContext context) { context.Respon

jsp 分页程序代码

jsp 分页程序代码 <%  String s;  String theurl;  theurl="products.jsp?";  s=request.getParameter("s");  if(s!=null){   s=new String(request.getParameter("s").getBytes("iso-8859-1"));   theurl="products.jsp?s="

用ASP做一个分页程序

用ASP做一个分页程序     wodeail·CPCW           你是否为了你的站点文章过多而反复做链接上一页.下一页这些烦琐的工作发愁呢?现在有了ASP,只要你的主页支持ASP,你就可以很简单的实现对文章的管理了,排序.链接.显示这些工作都让ASP去完成吧!这么轻松的主页维护,你是不是也想试一试呢?          请看以下实现ASP分页程序的代码:          <anguage="vbscript"          dim conn          d

asp查询xml的代码,实现了无刷新、模糊查询功能

xml|刷新|无刷新 asp查询xml的代码,实现了无刷新.模糊查询功能 <html><head><title>不刷新页面查询的方法</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head><script language="javascript"><