一个简单的ASP.MVC分页控件

分页功能实现方面参考了网上的一些内容,加上自己的一些修改,使用方式如 下:

(鉴于分页代码基本上和别人的没什么两样,所以这里就省略了。)

封装扩展方法

public static string Pager(this HtmlHelper html, IPageData model, bool alwaysShow,bool showNumber)        {            string text = "<!--没有任何数据,所以不显示分页控件-->";            bool show = model.TotalCount > 0 && alwaysShow || model.TotalCount > model.PageSize;            if (show)            {                StringBuilder sb = new StringBuilder();                var reqUrl = html.ViewContext.RequestContext.HttpContext.Request.Url.ToString();                string link = "";                if (reqUrl.IndexOf("page") >= 0)                {                    Regex re = new Regex(@"page=(\d+)", RegexOptions.IgnoreCase);                    link = re.Replace(reqUrl, "page=%7Bpage%7D");                }                else if (reqUrl.IndexOf("?") < 0)                {                    link = reqUrl + "?page=%7Bpage%7D";                }                else                {                    link = reqUrl + "&page=%7Bpage%7D";                }                #region 生成四个按钮                TagBuilder root = new TagBuilder("div");                root.AddCssClass("ZuiePager");                                TagBuilder fBtn = new TagBuilder("a");                fBtn.AddCssClass("btn");                fBtn.MergeAttribute("style", "font-family:Webdings;");                fBtn.InnerHtml = "9";                TagBuilder pBtn = new TagBuilder("a");                pBtn.AddCssClass("btn");                pBtn.MergeAttribute("style", "font-family:Webdings;");                pBtn.InnerHtml = "3";                TagBuilder nBtn = new TagBuilder("a");                nBtn.AddCssClass("btn");                nBtn.MergeAttribute("style", "font-family:Webdings;");                nBtn.InnerHtml = "4";                TagBuilder lBtn = new TagBuilder("a");                lBtn.AddCssClass("btn");                lBtn.MergeAttribute("style", "font-family:Webdings;");                lBtn.InnerHtml = ":";                #endregion                int p = model.PageIndex;                #region 判断首尾页                if (model.HasPreviousPage)                {                    string pUrl = link.Replace("%7Bpage%7D", (p - 1).ToString());                    string fUrl = link.Replace("%7Bpage%7D", (1).ToString());                    fBtn.MergeAttribute("href", fUrl);                    pBtn.MergeAttribute("href", pUrl);                }                else                {                    fBtn.MergeAttribute("disabled", "disabled");                    pBtn.MergeAttribute("disabled", "disabled");                }                if (model.HasNextPage)                {                    string nUrl = link.Replace("%7Bpage%7D", (p + 1).ToString());                    string lUrl = link.Replace("%7Bpage%7D", model.TotalPages.ToString());                    nBtn.MergeAttribute("href", nUrl);                    lBtn.MergeAttribute("href", lUrl);                }                else                {                    nBtn.MergeAttribute("disabled", "disabled");                    lBtn.MergeAttribute("disabled", "disabled");                }                #endregion                sb.Append(fBtn.ToString());                sb.Append(pBtn.ToString());                #region 生成中间数字                if (showNumber)                {                    int begin = p - 5;                    int end = p + 5;                    if (begin < 1)                    {                        begin = 1;                        end = 11;                    }                    if (end > model.TotalPages)                    {                        end = model.TotalPages;                        begin = end > 11 ? end - 10 : 1;                    }                    for (int i = begin; i <= end; i++)                    {                        TagBuilder num = new TagBuilder("span");                        if (p == i)                        {                            num.AddCssClass("current");                            num.InnerHtml = i.ToString();                        }                        else                        {                            string url = link.Replace("%7Bpage%7D", i.ToString());                            num.AddCssClass("num");                            TagBuilder a = new TagBuilder("a");                            a.MergeAttribute("href", url);                            a.InnerHtml = i.ToString();                            num.InnerHtml = a.ToString()+" ";                        }                        sb.Append(num.ToString());                    }                }                #endregion                sb.Append(nBtn.ToString());                sb.Append(lBtn.ToString());                #region 生成页信息                TagBuilder index = new TagBuilder("span");                index.AddCssClass("num");                index.InnerHtml = p.ToString();                TagBuilder pagecount = new TagBuilder("span");                pagecount.AddCssClass("num");                pagecount.InnerHtml = model.TotalPages.ToString();                TagBuilder pagesize = new TagBuilder("span");                pagesize.AddCssClass("num");                pagesize.InnerHtml = model.PageSize.ToString();                TagBuilder count = new TagBuilder("span");                count.AddCssClass("num");                count.InnerHtml = model.TotalCount.ToString();                sb.Append(string.Format(" 第{0}页/共{1}页 每页{2}条记录 合计{3}条", index.ToString(), pagecount.ToString(), pagesize.ToString(), count.ToString()));                root.InnerHtml = sb.ToString();                text = root.ToString();                #endregion            }            return text;        }

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索string
, tostring
, link
, model
, disabled
, Asp.Mvc
, MVC分页控件
mergeAttributes
asp.net mvc 分页控件、mvc 分页控件、mvc 自己写的分页控件、mvc5 分页控件、mvcpager分页控件,以便于您获取更多的相关知识。

时间: 2024-11-02 19:12:09

一个简单的ASP.MVC分页控件的相关文章

动态加载Asp.net分页控件

asp.net|动态|分页|加载|控件 动态加载Asp.net分页控件 郑佐2004-11-30 在asp.net中动态加载控件比较简单,这里我讲得是对用户控件的加载,比较典型的就是被加载的用户控件里面包含回发事件,在回传回来的时候需要保持新的数据. 先来构建分页用户控件,由于前面几篇文章都在讲这些东西,所以就直接拿过来改了改,分页代码可以查看上面的文章1,文章2,下面是用户控件的一部分代码. public class PagingControl : System.Web.UI.UserCont

ASP.Net分页控件发布

asp.net|分页|控件 由于.net自带的分页功能极其死板,自定义性不强不能满足需求,俺花了一个多星期的时间 写成的一个.net分页控件. 特性: 1.支持datagrid,datalist等分种数据显示控件,理论上只要有datasource的控件都可以 2.支持url方式分页,url分页的每一页都可以被搜索引擎搜到,并且支持url重写 3.控件样式可自定义 4.封装完全,使用过程序只需写一行代码   1 /******************************************

asp.net分页控件使用详解【附实例下载】_实用技巧

一.说明 AspNetPager.dll这个分页控件主要用于asp.net webform网站,现将整理代码如下 二.代码 1.首先在测试页面Default.aspx页面添加引用 <%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %> 2.写一个Repeater列表控件用于显示数据 <asp:Repeater ID

整理一个asp.net分页控件,分享。

问题描述 asp.net的资源应该说比较丰富了,分页控件也有很多.我原创了一个,希望有朋友喜欢.整理在我的bloghi.baidu.com/hzfmt(带图)==================该控件使用在我的新网站www.lovemai.com.cn乐买网邀请大家来看看,提提宝贵意见. 解决方案 解决方案二:o(∩_∩)o...哈哈,看了看,8错收藏了,感谢分享解决方案三:mark解决方案四:去看看下载解决方案五:大家如果发现有什么问题一定要告诉我哦.关系到我网站的使用哦.:-)解决方案六:d

【自然框架】QuickPager asp.net 分页控件的Ajax分页方式。

  上次比较匆忙,Ajax的分页方式仅实现了基本功能,或者说只是验证了我的想法.现在对Ajax分页有做了一些调整,现在可以正式用了.   使用方法还是非常简单,可以完全按照URL分页方式来做,只需要把PagerTurnKind 属性 设置为:PagerTurnKind.AjaxForWebControl;就可以了.   然后前台需要引用jquery-1.4.2.min.js和QuickPager-1.0.js.QuickPager-1.0.js是QuickPager需要用的一个js脚本,Demo

一个相当独立的.通用分页控件c#源码

分页|控件      通用ASP.NET数据分页控件 对于几乎所有的数据表现Web应用来说,组织好数据的显示方式.避免给用户带来混乱的感觉就是最主 要的目标之一.每个页面显示20条记录当然是可以接受的,但每页显示10000条记录就很容易给用户带来不便了.将数据分成多个页面显示,即对数据进行分 页,是解决此类问题的最常见的办法. 一.慨述 ASP.NET本身只提供了一个支持数据分页的控件,即 DataGrid分页控件,不过它比较适合Intranet环境使用,对于Internet环境来说,DataG

QuickPager asp.net 分页控件、表单控件等自定义控件下载 和介绍 【2009.09.07更新】

    最新下载地址: 自然框架的源代码.Demo.数据库.配置信息管理程序下载(2010.01.25更新)     QuickControl web控件集包含的控件 QuickControl web控件集--基本控件: 控件名称 说明 详细介绍 MyTextBox  继承TextBox,增加了几个属性,继承IControlMgr接口 进入 MyDropDownList  继承DropDownList,增加了几个属性,继承IControlMgr接口 进入 MyCheckBoxList  继承Ch

asp.net-AspNetPager分页控件在同一页面中按条件查询的数据分页的连续问题

问题描述 AspNetPager分页控件在同一页面中按条件查询的数据分页的连续问题 AspNetPager分页控件在同一个页面中多次修改SQL查询语句后的问题,如何在PageChanged事件中取得最新一次查询的SQL字符串值. 我需要在一个页面中根据搜索条件,多次修改SQL查询语句,可是分页控件的BindData(string sql)方法, 在PageChanged事件中引用的private string sql变量却总是首次加载页面时的值,点击分页后就变回了 原来的查询结果.如何使用Asp

asp.net分页控件AspNetPager的样式美化_实用技巧

在前段时间的开发网站的过程中,突然觉得这个简洁的样式看着和网站整体的风格实在不搭调,于是看看AspNetPager的最后生成html,写了一段CSS样式,将分页的样式和网站整体风格统一起来了. 效果如下: 做的不是很好看,希望大家不要丢砖头,俺的头没包棉絮,伤不起 ~-_-~ CSS样式表: /* AspNetPager Style Power By http://www.edweb.cn */.pager{ width:95%;  margin:10px; line-height:20px;