第一种

   /// <summary>

         /// 分页Pager显示
/// </summary>
/// <param name="html"></param>
/// <param name="currentPageStr">标识当前页码的QueryStringKey</param>
/// <param name="pageSize">每页显示</param>
/// <param name="totalCount">总数据量</param>
/// <returns></returns>
public static string Pager(this HtmlHelper html, string currentPageStr, int pageSize, int totalCount)
{
var queryString = html.ViewContext.HttpContext.Request.QueryString;
int currentPage = ; //当前页
int.TryParse(queryString[currentPageStr], out currentPage); //与相应的QueryString绑定
var totalPages = Math.Max((totalCount + pageSize - ) / pageSize, ); //总页数
var dict = new RouteValueDictionary(html.ViewContext.RouteData.Values); var output = new StringBuilder(); foreach (string key in queryString.Keys)
if (queryString[key] != null && !string.IsNullOrEmpty(key))
dict[key] = queryString[key];
if (totalPages > )
{
if (currentPage != )
{//处理首页连接
dict["p"] = ;
output.AppendFormat("{0} ", html.RouteLink("首页", dict));
}
if (currentPage > )
{//处理上一页的连接
dict["p"] = currentPage - ;
output.Append(html.RouteLink("上一页", dict));
}
else
{
output.Append("上一页");
}
output.Append(" ");
int currint = ;
for (int i = ; i <= ; i++)
{//一共最多显示10个页码,前面5个,后面5个
if ((currentPage + i - currint) >= && (currentPage + i - currint) <= totalPages)
if (currint == i)
{//当前页处理
output.Append(string.Format("[{0}]", currentPage));
}
else
{//一般页处理
dict["p"] = currentPage + i - currint;
output.Append(html.RouteLink((currentPage + i - currint).ToString(), dict));
}
output.Append(" ");
}
if (currentPage < totalPages)
{//处理下一页的链接
dict["p"] = currentPage + ;
output.Append(html.RouteLink("下一页", dict));
}
else
{
output.Append("下一页");
}
output.Append(" ");
if (currentPage != totalPages)
{
dict["p"] = totalPages;
output.Append(html.RouteLink("末页", dict));
}
output.Append(" ");
}
output.AppendFormat("{0} / {1}", currentPage, totalPages);//这个统计加不加都行
return output.ToString();
}
第二个 using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Text;
using System.Collections.Specialized;
using System.Web.Routing; namespace System.Web.Mvc
{
public static class PagerHelper
{
///
/// 分页
///
///
/// 分页id
/// 当前页
/// 分页尺寸
/// 记录总数
/// 分页头标签属性
/// 分页样式
/// 分页模式
///
public static string Pager(this HtmlHelper helper, string id, int currentPageIndex, int pageSize, int recordCount, object htmlAttributes, string className, PageMode mode)
{
TagBuilder builder = new TagBuilder("div");
builder.IdAttributeDotReplacement = "_";
builder.GenerateId(id);
builder.MergeAttributes(new RouteValueDictionary(htmlAttributes));
builder.InnerHtml = GetNormalPage(helper, currentPageIndex, pageSize, recordCount, mode);
return builder.ToString(TagRenderMode.Normal);
} ///
/// 分页
///
///
/// 分页id
/// 当前页
/// 分页尺寸
/// 记录总数
/// 分页样式
///
public static string Pager(this HtmlHelper helper, string id, int currentPageIndex, int pageSize, int recordCount, string className)
{
return Pager(helper, id, currentPageIndex, pageSize, recordCount, null, className, PageMode.Normal);
} ///
/// 分页
///
///
/// 分页id
/// 当前页
/// 分页尺寸
/// 记录总数
///
public static string Pager(this HtmlHelper helper, string id, int currentPageIndex, int pageSize, int recordCount)
{
return Pager(helper, id, currentPageIndex, pageSize, recordCount, null);
} ///
/// 分页
///
///
/// 分页id
/// 当前页
/// 分页尺寸
/// 记录总数
/// 分页模式
///
public static string Pager(this HtmlHelper helper, string id, int currentPageIndex, int pageSize, int recordCount, PageMode mode)
{
return Pager(helper, id, currentPageIndex, pageSize, recordCount, null, mode);
} ///
/// 分页
///
///
/// 分页id
/// 当前页
/// 分页尺寸
/// 记录总数
/// 分页样式
/// 分页模式
///
public static string Pager(this HtmlHelper helper, string id, int currentPageIndex, int pageSize, int recordCount, string className, PageMode mode)
{
return Pager(helper, id, currentPageIndex, pageSize, recordCount, null, className, mode);
} ///
/// 获取普通分页
///
///
///
///
///
private static string GetNormalPage(this HtmlHelper helper, int currentPageIndex, int pageSize, int recordCount, PageMode mode)
{
int pageCount = (recordCount % pageSize == ? recordCount / pageSize : recordCount / pageSize + );
string url = HttpContext.Current.Request.Url.AbsolutePath + "?page={0}";
string HtmlStr = string.Empty;
NameValueCollection collection = HttpContext.Current.Request.QueryString;
string[] keys = collection.AllKeys;
for (int i = ; i < keys.Length; i++)
{
if (keys[i].ToLower() != "page")
url += "&" + keys[i] + "=" + collection[keys[i]] + "";
}
HtmlStr += "<div class=\"right maunlist\" style=\"width: 520px; float:right;\">";
HtmlStr += "<div class=\"left manur\" style=\"float:right\">";
HtmlStr += "<div class=\"manudisableda\">到第</div>";
HtmlStr += "<div class=\"manudisableda\"><input name=\"\" type=\"text\" id=\"page\" style=\"width:40px; margin-top:2px\"/></div>";
HtmlStr += "<div class=\"manudisableda\">页</div><div class=\"manudisableda\"><a href=\"#\"><img id=\"queding\" src=\"../../list_img/OKBTN.jpg\" width=\"70\" height=\"24\" /></a></div></div>";
// HtmlStr += "<tr><td>总共" + recordCount + "条记录,共" + pageCount + "页,当前第" + currentPageIndex + "页 </td>";
HtmlStr += "<div class=\"left manuleft\" style=\"float:right;\">";
//if (currentPageIndex == 1)
// HtmlStr += "<a>首页</a> ";
//else
//{
// string url1 = string.Format(url.ToString(), 1);
// HtmlStr += "<a href=\"" + url1 + "\">首页</a> ";
//}
if (currentPageIndex > )
{
string url1 = string.Format(url.ToString(), currentPageIndex - );
HtmlStr += "<a href=\"" + url1 + "\">上一页</a> "; }
else
HtmlStr += "<span class=\"pageNum\">上一页</span> ";
if (mode == PageMode.Numeric)
HtmlStr += GetNumericPage(currentPageIndex, pageSize, recordCount, pageCount, url.ToString());
if (currentPageIndex < pageCount)
{
string url1 = string.Format(url.ToString(), currentPageIndex + );
HtmlStr += "<a href=\"" + url1 + "\">下一页</a> ";
}
else
HtmlStr += "<span class=\"pageNum\">下一页</span> "; //if (currentPageIndex == pageCount)
// HtmlStr += "末页 ";
//else
//{
// string url1 = string.Format(url.ToString(), pageCount);
// HtmlStr += "<a href=\"" + url1 + "\">末页</a> ";
//}
HtmlStr += "</div>"; HtmlStr += "</div>";
return HtmlStr.ToString();
} ///
/// 获取数字分页
///
///
///
///
///
///
///
private static string GetNumericPage(int currentPageIndex, int pageSize, int recordCount, int pageCount, string url)
{
int page = ; int count = pageCount % page == ? pageCount / page : (pageCount / page + );
int k = currentPageIndex / page;
int m = currentPageIndex % page;
string sbhtml = string.Empty;
//当前在第几个分页上
int index = currentPageIndex % page == ? currentPageIndex / page : (currentPageIndex / page + );
if (index != )
{
sbhtml += "<span>...</span>";
}
if (currentPageIndex / page == pageCount / page)
{
if (m == )
{
k--;
m = page;
}
else
m = pageCount % page;
}
else
if (m == )
{
k--;
m = page;
}
else
{
m = ;
} for (int i = k * page + ; i <= k * page + m; i++)
{
if (i == currentPageIndex)
sbhtml += "<font class=\"pagertion\">" + string.Format("{0} ", i) + "</font>";
else
{
string url1 = string.Format(url.ToString(), i);
sbhtml += "<a href=\"" + url1 + "\">" + string.Format("{1} ", url1, i) + "</a>"; } } if (count > )
{
if (index < count)
{
sbhtml += "<span>...</span>";
} } return sbhtml.ToString();
}
} ///
/// 分页模式
///
public enum PageMode
{
///
/// 普通分页模式
///
Normal,
///
/// 普通分页加数字分页
///
Numeric
}
}

asp.net mvc 的几种分页Pager的更多相关文章

  1. Asp.Net中的三种分页方式

    Asp.Net中的三种分页方式 通常分页有3种方法,分别是asp.net自带的数据显示空间如GridView等自带的分页,第三方分页控件如aspnetpager,存储过程分页等. 第一种:使用Grid ...

  2. asp.net mvc 中 一种简单的 URL 重写

    asp.net mvc 中 一种简单的 URL 重写 Intro 在项目中想增加一个公告的功能,但是又不想直接用默认带的那种路由,感觉好low逼,想弄成那种伪静态化的路由 (别问我为什么不直接静态化, ...

  3. ASP.NET MVC中有四种过滤器类型

    在ASP.NET MVC中有四种过滤器类型

  4. ASP.NET MVC Filters 4种默认过滤器的使用【附示例】 数据库常见死锁原因及处理 .NET源码中的链表 多线程下C#如何保证线程安全? .net实现支付宝在线支付 彻头彻尾理解单例模式与多线程 App.Config详解及读写操作 判断客户端是iOS还是Android,判断是不是在微信浏览器打开

    ASP.NET MVC Filters 4种默认过滤器的使用[附示例]   过滤器(Filters)的出现使得我们可以在ASP.NET MVC程序里更好的控制浏览器请求过来的URL,不是每个请求都会响 ...

  5. ASP.NET MVC Filters 4种默认过滤器的使用【附示例】

    过滤器(Filters)的出现使得我们可以在ASP.NET MVC程序里更好的控制浏览器请求过来的URL,不是每个请求都会响应内容,只响应特定内容给那些有特定权限的用户,过滤器理论上有以下功能: 判断 ...

  6. 认识ASP.NET MVC的5种AuthorizationFilter

    在总体介绍了筛选器及其提供机制(<深入探讨ASP.NET MVC的筛选器>)之后,我们按照执行的先后顺序对四种不同的筛选器进行单独介绍,首先来介绍最先执行的AuthorizationFil ...

  7. Asp.Net中的三种分页方式总结

    本人ASP.net初学,网上找了一些分页的资料,看到这篇文章,没看到作者在名字,我转了你的文章,只为我可以用的时候方便查看,2010的文章了,不知道这技术是否过期. 以下才是正文 通常分页有3种方法, ...

  8. Asp.Net MVC结合ExtJs gridPanel 分页和高度自适应

    Ext.onReady(function () { gridPanel(); var panel = Ext.getCmp('gridPanel'); window.onresize = functi ...

  9. Asp.Net MVC EasyUI DataGrid查询分页

    function doSearch() { //查询方法 var searchValue = $('#txtQueryTC001').textbox('getText'); $('#dgCMSTC') ...

随机推荐

  1. word2003公式编辑器公式显示不完整问题

    在段落里设置行距为:单倍行距.

  2. HTML5几种常见的错误写法

    本文介绍了HTML5常见的6种错误写法,包括:1.不要使用section作为div的替代品 2.只在需要的时候使用header和hgroup 3.不要把所有列表式的链接放在nav里 4.figure元 ...

  3. UVa 1640 The Counting Problem (数学,区间计数)

    题意:给定两个数m, n,求从 m 到 n 中0-9数字各出现了多少次. 析:看起来挺简单的,其实并不好做,因为有容易想乱了.主要思路应该是这样的,分区间计数,先从个位进行计,一步一步的计算过来.都从 ...

  4. MFC中常用的内容

    在程序中更改静态文本内容. GetDlgItem(IDC_STATIC)->SetWindowText("欢迎"); 不用UpdateData(false); 如果提示con ...

  5. 大一上C语言期末大作业-成绩管理系统

    都过了半年的作业了,觉得做过去得留下点什么,所以整理了代码发一下博客. 声明:程序在DevC++下用c文件模式可以正常编译使用.(控制台程序) 程序结构:

  6. 让table 居于页面的正中间(上下左右均居中的方法)

    ? <table bgcolor="#jnkc" width="300" height="200" style="posit ...

  7. 【转】一个安全测试的CheckList

    转自:http://hi.baidu.com/dontcry/item/90c2bc466558c217886d1075 不登录系统,直接输入登录后的页面的URL是否可以访问: 不登录系统,直接输入下 ...

  8. 硝烟中的scrum学习笔记 - 怎样制定Sprint计划(Plan Meeting)

    1. 如何估算我们这个sprint能做多少个故事点 1) 本能反应 2) 生产率计算  估算生产率/实际生产率  看看团队的历史,看看他们在过去几个sprint里的生产率是多少  然后假定在下一个sp ...

  9. CSS里的单位

    CSS中预设了16种颜色以及16种颜色的衍生色,这16种颜色是CSS规范推荐的.并且一些主流的浏览器都可以识别.例如以下表所看到的: 十六进制颜色是最经常使用的定义方式.它的基本格式为#RRGGBB, ...

  10. 实例源码--Android旋转式菜单(效果很炫)

    下载源码   技术要点: 1.旋转式菜单功能实现 2.动画的应用 3.自定义控件的使用 ...... 详细介绍: 1. 旋转式菜单功能实现 本套例子通过自定义布局与动画的综合使用,实现了旋转式菜单效果 ...