asp.net mvc 的几种分页Pager
第一种 /// <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的更多相关文章
- Asp.Net中的三种分页方式
Asp.Net中的三种分页方式 通常分页有3种方法,分别是asp.net自带的数据显示空间如GridView等自带的分页,第三方分页控件如aspnetpager,存储过程分页等. 第一种:使用Grid ...
- asp.net mvc 中 一种简单的 URL 重写
asp.net mvc 中 一种简单的 URL 重写 Intro 在项目中想增加一个公告的功能,但是又不想直接用默认带的那种路由,感觉好low逼,想弄成那种伪静态化的路由 (别问我为什么不直接静态化, ...
- ASP.NET MVC中有四种过滤器类型
在ASP.NET MVC中有四种过滤器类型
- ASP.NET MVC Filters 4种默认过滤器的使用【附示例】 数据库常见死锁原因及处理 .NET源码中的链表 多线程下C#如何保证线程安全? .net实现支付宝在线支付 彻头彻尾理解单例模式与多线程 App.Config详解及读写操作 判断客户端是iOS还是Android,判断是不是在微信浏览器打开
ASP.NET MVC Filters 4种默认过滤器的使用[附示例] 过滤器(Filters)的出现使得我们可以在ASP.NET MVC程序里更好的控制浏览器请求过来的URL,不是每个请求都会响 ...
- ASP.NET MVC Filters 4种默认过滤器的使用【附示例】
过滤器(Filters)的出现使得我们可以在ASP.NET MVC程序里更好的控制浏览器请求过来的URL,不是每个请求都会响应内容,只响应特定内容给那些有特定权限的用户,过滤器理论上有以下功能: 判断 ...
- 认识ASP.NET MVC的5种AuthorizationFilter
在总体介绍了筛选器及其提供机制(<深入探讨ASP.NET MVC的筛选器>)之后,我们按照执行的先后顺序对四种不同的筛选器进行单独介绍,首先来介绍最先执行的AuthorizationFil ...
- Asp.Net中的三种分页方式总结
本人ASP.net初学,网上找了一些分页的资料,看到这篇文章,没看到作者在名字,我转了你的文章,只为我可以用的时候方便查看,2010的文章了,不知道这技术是否过期. 以下才是正文 通常分页有3种方法, ...
- Asp.Net MVC结合ExtJs gridPanel 分页和高度自适应
Ext.onReady(function () { gridPanel(); var panel = Ext.getCmp('gridPanel'); window.onresize = functi ...
- Asp.Net MVC EasyUI DataGrid查询分页
function doSearch() { //查询方法 var searchValue = $('#txtQueryTC001').textbox('getText'); $('#dgCMSTC') ...
随机推荐
- Spring入门(3)-Spring命名空间与Bean作用域
Spring入门(3)-Spring命名空间与Bean作用域 这篇文章主要介绍Spring的命名空间和Bean作用域 0. 目录 Spring命名空间 Bean作用域 1. Spring命名空间 在前 ...
- Java线程池学习
Java线程池学习 Executor框架简介 在Java 5之后,并发编程引入了一堆新的启动.调度和管理线程的API.Executor框架便是Java 5中引入的,其内部使用了线程池机制,它在java ...
- Unity3D音乐音效学习笔记
对于Unity3D的音乐音效这块一直没有好好的看过,现在准备好好的研究一下,并作为一个笔记记录下. 支持格式 在游戏中,一般存在两种音乐,一种是时间较长的背景音乐,一种是时间较短的音效(比如按钮点击, ...
- linux 下安装apache 快速教程
最近自学linux,看鸟哥的文章.提到了apache,所以在虚拟机redhat 5下安装了一把, 结合国内外文章写下快速可行的教程: --------------------------------- ...
- Jquery中使用setInterval和setTimeout
直接在ready中调用其他方法,会提示缺少对象的错误,解决方法如下: 方法1. 应用jQuery的扩展可以解决这个问题. $(document).ready(function(){ $.extend( ...
- SQL Select的执行顺序
1.FROM 2.ON 3.JOIN 4.WHERE 5.GROUP BY 6.WITH CUBE or WITH ROLLUP 7.HAVING 8.SELECT 9.DISTINCT 10.ORD ...
- java中动态代理
一.在java中怎样实现动态代理 1.我们要有一个接口,还要有一个接口的实现类,而这个实现类呢就是我们要代理的对象 接口: package org.dynamicproxy.test; public ...
- 有关java中static关键的重写问题
<Java编程思想>中这样提到“只有普通的方法调用可以是多态的”.说白了,就是静态方法不能实现重写这种多态. JAVA静态方法形式上可以重写(只要子类不加@Override关键字修饰的话, ...
- PP常用T-CODE
与BOM相关 CS00 BOM 菜单 BOM Menu CS01 生成物料 BOM Create Material BOM CS02 更改物料 BOM Change Material CS03 显示物 ...
- 理解WebKit和Chromium: 调试Android系统上的Chromium
转载请注明原文地址:http://blog.csdn.net/milado_nju 1. Android上的调试技术 在Android系统上,开发人员能够使用两种不同的语言来开发应用程序,一种是Jav ...