Mvc分页扩展类 分页代码 带跳转
public static class HtmlPager
{
public static MvcHtmlString MvcPager(this HtmlHelper html, string currentPageStr, int pageSize, int totalCount)
{
var queryString = html.ViewContext.HttpContext.Request.QueryString;
int currentPage = 1; //当前页
var totalPages = Math.Max((totalCount + pageSize - 1) / pageSize, 1); //总页数
var dict = new System.Web.Routing.RouteValueDictionary(html.ViewContext.RouteData.Values);
var output = new StringBuilder();
StringBuilder urlformat = new StringBuilder();//url地址
foreach (string item in dict.Keys)
{
urlformat.Append("/" + dict[item].ToString());
}
urlformat.Append("?");
if (!string.IsNullOrEmpty(queryString[currentPageStr]))
{
//与相应的QueryString绑定
foreach (string key in queryString.Keys)
if (queryString[key] != null && !string.IsNullOrEmpty(key))
dict[key] = queryString[key];
int.TryParse(queryString[currentPageStr], out currentPage);
}
else
{
//获取 ~/Page/{page number} 的页号参数
if (dict.ContainsKey(currentPageStr))
int.TryParse(dict[currentPageStr].ToString(), out currentPage);
}
foreach (string item in queryString.Keys)
{
if (item != currentPageStr)
{
urlformat.Append(item + "=" + queryString[item].ToString() + "&");
}
}
urlformat.Append(currentPageStr + "=");
string strUrlformat = urlformat.ToString();
//保留查询字符到下一页
foreach (string key in queryString.Keys)
dict[key] = queryString[key]; //如果有需要,保留表单值到下一页 (我暂时不需要, 所以注释掉)
//var formValue = html.ViewContext.HttpContext.Request.Form;
//foreach (string key in formValue.Keys)
// if (formValue[key] != null && !string.IsNullOrEmpty(key))
// dict[key] = formValue[key]; if (currentPage <= 0) currentPage = 1;
if (totalPages > 0)
{
output.AppendFormat("共{0}页 ", totalPages);//这个统计加不加都行
//if (currentPage != 1)//第一页时不显示
//{
//处理首页连接 永远显示
//dict[currentPageStr] = 1;
//output.AppendFormat("{0} ", html.RouteLink("首页", dict));
output.Append("<a href='" + urlformat + "1'>首页</a>");
//}
if (currentPage > 1)
{
//处理上一页的连接
//dict[currentPageStr] = currentPage - 1;
//output.Append(html.RouteLink("上一页", dict));
output.Append("<a href='" + strUrlformat + (currentPage - 1) + "'>上一页</a>");
}
else
{
output.Append("<a href='javascript:void(0);'>上一页</a>");
//output.Append("上一页");
}
output.Append(" ");
int currint = 2;
for (int i = 0; i <= 4; i++)
{
//一共最多显示5个页码,前面2个,后面2个
if ((currentPage + i - currint) >= 1 && (currentPage + i - currint) <= totalPages)
if (currint == i)
{
//当前页处理
output.Append(string.Format("<a class='Cur01' href='javascript:void(0);'>{0}</a>", currentPage));
//output.Append(string.Format("[{0}]", currentPage));
}
else
{
//一般页处理
//dict[currentPageStr] = currentPage + i - currint;
//output.Append(html.RouteLink((currentPage + i - currint).ToString(), dict));
output.Append("<a href='" + strUrlformat + (currentPage + i - currint) + "'>" + (currentPage + i - currint) + "</a>");
}
output.Append(" ");
}
if (currentPage < totalPages)
{
//处理下一页的链接
//dict[currentPageStr] = currentPage + 1;
//output.Append(html.RouteLink("下一页", dict));
output.Append("<a href='" + strUrlformat + (currentPage + 1) + "'>下一页</a>");
}
else
{
output.Append("<a href='javascript:void(0);'>下一页</a>");
//output.Append("下一页");
}
output.Append(" ");
//if (currentPage != totalPages)//最后一页时不显示
//{
//dict[currentPageStr] = totalPages;
//output.Append(html.RouteLink("尾页", dict));
output.Append("<a href='" + strUrlformat + (totalPages) + "'>尾页</a>");
//}
output.Append(" ");
//output.AppendFormat("{0} / {1}", currentPage, totalPages);//这个统计加不加都行 output.Append(html.TextBox("JumpPage", null, new { Class = "TJump", onkeydown = "return EnterPress(event)" }));
output.Append(" ");
output.Append("<input type='button' value='Go' id='btnJump' data-maxpages='" + totalPages + "' data-urlformat='" + HttpContext.Current.Server.HtmlEncode(strUrlformat) + "' onclick='return gotopage()' />");
}
string rtnStr = output.ToString();
string flagStr = @"[\?&]page=1(?!\d)";//?!负声明,涵义:括号中的模式必须不出现在声明右侧
rtnStr = Regex.Replace(rtnStr, flagStr, "");
return new MvcHtmlString(rtnStr);
}
}
function gotopage() { var pagetarget = $("#JumpPage").val(); var r = new RegExp("^\\s*(\\d+)\\s*$"); if (!r.test(pagetarget)) { alert("请输入有效数字!"); return; } else if (RegExp.$1 < 1 || RegExp.$1 > parseInt($("#btnJump").attr("data-maxpages"))) { alert("超出范围!"); return; } else { location.href = decodeURI($("#btnJump").attr("data-urlformat") + pagetarget) } }
@Html.MvcPager("page", pageSize, count)
Mvc分页扩展类 分页代码 带跳转的更多相关文章
- MVC HtmlHelper扩展——实现分页功能
MVC HtmlHelper扩展类(PagingHelper) using System; using System.Collections.Generic; using System.Collect ...
- 分页 工具类 前后台代码 Java JavaScript (ajax) 实现 讲解
[博客园cnblogs笔者m-yb原创, 转载请加本文博客链接,笔者github: https://github.com/mayangbo666,公众号aandb7,QQ群927113708]http ...
- 【WH】MVC数据分页扩展类
public static class QueryableExtensions { #region 内存分页 /// <summary> /// 返回对象分页列表 /// </sum ...
- tornado自定义分页扩展
一.分页扩展类 #! /usr/bin/env python # -*- coding:utf-8 -*- # __author__ = "TKQ" class Paginatio ...
- ASP.NET MVC 数据分页思想及解决方案代码
作为一个程序猿,数据分页是每个人都会遇到的问题.解决方案更是琳琅满目,花样百出.但基本的思想都是差不多的. 下面给大家分享一个简单的分页器,让初学者了解一下最简单的分页思想,以及在ASP.NET MV ...
- yii2分页扩展之实现跳转到具体某页
作者:白狼 出处:http://www.manks.top/yii2_linkpager_widget.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文 ...
- ASP.NET MVC4 HtmlHelper扩展类,实现分页功能 @Html.ShowPageNavigate
本文主要做了一个HtmHelper类的分页扩展函数,方便在视图中调用,有需要的朋友可以参考一下,希望对大家有所帮助. 1.扩展HtmlHelper类方法ShowPageNavigate output. ...
- 【asp.net mvc】 扩展 htmlhelper 实现分页
参考文档:http://www.cnblogs.com/caofangsheng/p/5670071.html http://www.cnblogs.com/arte ...
- MVC下分页的自定义分页一种实现
1.引言 在MVC开发中我们经常会对数据进行分页的展示.通过分页我们可以从服务端获取指定的数据来进行展示.这样既节约了数据库查询的时间也节约了网络传输的数据量.在MVC开发中使用的比较多的应该是MVC ...
随机推荐
- PHP面向对象.__set(),__get(),__isset(),__unset()四个方法的
一般来说,总是把类的属性定义为private,这更符合现实的逻辑.但是, 对属性的读取和赋值操作是非常频繁的,因此在PHP5中,预定义了两个函数”__get()”和”__set()”来获取和赋值其属性 ...
- oracle 返回第一个不为空的列的值
) from emp; 作用是返回函数coalesce参数中第一个不为null的值.
- javaScript 查询字符串参数 获取
function getQueryStringArgs() { //取得查询字符串并去掉开头的问号 var qs = (location.search.length > 0 ? location ...
- sqlite的增删改查
// 基本步骤 // 1. 打开数据库 // 2. 处理数据 // 3. 关闭数据库 //先设置全局变量 lazy var documentsPath: String = { let paths = ...
- java_method_下拉框成json
List<String[]> proList=service.getUserList(); int nTotal=0; String proJson="["; proJ ...
- js获取鼠标当前的位置
有时候,我们需要得到窗口拖动或者鼠标移动的距离,此时可以通过计算鼠标前后在页面中的位置来得到想要的结果,下面介绍几个事件属性: 1.客户区坐标位置 鼠标事件都是在浏览器视口中的特定位置上发生的.这个位 ...
- 关于JS 事件冒泡和onclick,click,on()事件触发顺序
今天在给JQgrid中的标签添加click事件的时候,发现一个问题. JQgrid的table中,点击任何位置,都会勾选点击行的checkbox,而我希望在点击我的标签的时候,不要勾选checkbox ...
- highcharts曲线图
在做项目时,用highcharts做过曲线图,X轴是从后台获取的时间数据,Y轴是从后台获取的Int型数据 1.我的后台数据封装成json格式,数据较多,展示部分数据 2.曲线图的展示 3.前端jsp页 ...
- 简易购物车 --day2
代码段 f =float(input('输入你的工资')) goods=['1.apple','2.mac','3.ph','4.python','5.php'] price=[35,26.5,14, ...
- 苗子sale record
2016年7月11日 橘白/阳光 发广州 220 中通 719373064939 成功2016年7月11日 横纹RA 发潮州 250 中通 719373064940 成功2016年7月18日 ...