c# asp.net 实现分页(pager)功能
分页PagerHelper辅助类
- using System;
using System.Web;
- public class PagerHelper
- {
- #region 获取分页的Html代码
- /// <summary>
- /// 获取分页的Html代码
- /// 当前页码方法内部根据Request["page"]获取
- /// </summary>
- /// <param name="pageSize">每一页数量</param>
- /// <param name="totalCount">总数量</param>
- /// <param name="url">伪静态地址如/news/list-1-{0}.html</param>
- /// <param name="maxPageNum">最多显示的页码个数(100页 每次只显示8个其他隐藏)</param>
- /// <returns></returns>
- public static string GetPageHtml(int pageSize, int totalCount, string url, int maxPageNum = 8)
- {
- HttpRequest Request = HttpContext.Current.Request;
- int curPageIndex = 1;
- if (!string.IsNullOrWhiteSpace(Request["page"]))
- {
- curPageIndex = Convert.ToInt32(Request["page"] ?? "1");
- curPageIndex = curPageIndex <= 0 ? 1 : curPageIndex;
- }
- System.Text.StringBuilder pageHtml = new System.Text.StringBuilder();
- //if (pageIndex > 1)
- //{
- pageHtml.Append(curPageIndex == 1 ? "<a href=\"javascript:void(0);\">首页</a>" : "<a href=\"" + string.Format(url, 1) + "\">首页</a>");
- pageHtml.Append(curPageIndex > 1 ? "<a href=\"" + string.Format(url, curPageIndex - 1) + "\">上一页</a>" : "<a href=\"javascript:void(0);\">上一页</a>");
- //}
- int pageCount = GetPageCount(pageSize, totalCount);//总页码
- //获取显示区域第一个开始位置 如 1 9 17
- int firstNum = curPageIndex % maxPageNum == 0 ? curPageIndex - (maxPageNum - 1) : curPageIndex - curPageIndex % maxPageNum + 1;
- if (firstNum > maxPageNum)
- {
- pageHtml.Append("<a href=\"" + string.Format(url, firstNum - 1) + "\">...</a>");
- }
- for (int i = firstNum; i < firstNum + maxPageNum; i++)
- {
- if (i > pageCount) break;
- string css = string.Empty;
- if (i == curPageIndex)
- {
- css = "class=\"currentpage\"";
- }
- pageHtml.Append("<a " + css + " href=\"" + string.Format(url, i) + "\">" + i + "</a>");
- }
- if (pageCount >= firstNum + maxPageNum)
- {
- pageHtml.Append("<a href=\"" + string.Format(url, firstNum + maxPageNum) + "\">...</a>");
- }
- //if (pageCount > curPageIndex)
- //{
- pageHtml.Append(curPageIndex < pageCount ? "<a href=\"" + string.Format(url, curPageIndex + 1) + "\">下一页</a>" : "<a href=\"javascript:void(0);\">下一页</a>");
- pageHtml.Append("<a href=\"" + string.Format(url, pageCount) + "\">尾页</a>");
- //}
- pageHtml.Append(string.Format("<a href=\"javascript:void(0);\">共{0}页,{1}条</a>", pageCount, totalCount));
- return pageHtml.ToString();
- }
- #endregion
- #region 获取页码总数
- /// <summary>
- /// 获取页码总数
- /// </summary>
- /// <param name="pageSize">每一页 数量</param>
- /// <param name="totalCount">总数量</param>
- /// <returns></returns>
- private static int GetPageCount(int pageSize, int totalCount)
- {
- int pageNumbers = 0;
- if (totalCount % pageSize != 0)
- {
- pageNumbers = totalCount / pageSize + 1;
- }
- else
- {
- pageNumbers = totalCount / pageSize;
- }
- pageNumbers = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(totalCount) / Convert.ToDouble(pageSize)));
- return pageNumbers;
- }
- #endregion
- }
前台使用
- <%@ Page Language="C#" AutoEventWireup="true" %>
- <!DOCTYPE html>
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head runat="server">
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title></title>
- <style>
- html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, code, del, dfn, em, img, q, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, i { margin: 0; padding: 0; border: 0; font-weight: inherit; font-style: inherit; font-size: 100%; font-family: inherit; vertical-align: baseline; }
- body { background: #fff; font: 12px/1.5 Tahoma; color: #000; }
- a { text-decoration: none; cursor: pointer; }
- /*分页*/
- .page { clear: both; text-align: center; margin-top: 10px; margin-bottom: 20px; }
- .page a { border: 1px solid #dbdbdb; background: #fff; padding: 5px 10px; margin: 1px; display: inline-block; color: #000; }
- .page a:hover { text-decoration: none; background-color: #2196F3; color: #fff; }
- .page span a { border: 1px solid #1f5b13; background: #fff; padding: 2px 7px; margin: 1px; display: inline-block; color: #104c00; }
- .page span a:hover { text-decoration: none; background-color: #a3c79c; }
- .page .currentpage { background-color: #ff8800; color: #fff; }
- </style>
- </head>
- <body>
- <form id="form1" runat="server">
- <div class="page">
- <asp:Literal runat="server" ID="ltHtml"></asp:Literal>
- </div>
- </form>
- <script runat="server">
- protected void Page_Load(object sender, EventArgs e)
- {
- ltHtml.Text = PagerHelper.GetPageHtml(3, 33, "/tpager_demo.aspx?page={0}");
- }
- </script>
- </body>
- </html>
预览图
c# asp.net 实现分页(pager)功能的更多相关文章
- asp.net mvc 的几种分页Pager
第一种 /// <summary> /// 分页Pager显示 /// </summary> /// <param name="html">&l ...
- ASP.NET MVC分页组件MvcPager 2.0版发布暨网站全新改版
MvcPager分页控件是在ASP.NET MVC Web应用程序中实现分页功能的一系列扩展方法,该分页控件的最初的实现方法借鉴了网上流行的部分源代码, 尤其是ScottGu的PagedList< ...
- asp.net mvc 自定义pager封装与优化
asp.net mvc 自定义pager封装与优化 Intro 之前做了一个通用的分页组件,但是有些不足,从翻页事件和分页样式都融合在后台代码中,到翻页事件可以自定义,再到翻页和样式都和代码分离, 自 ...
- ASP.NET MVC分页实现之改进版-增加同一个视图可设置多个分页
我之前就已经实现了ASP.NET MVC分页(查看该博文),但它有局限性,必须确保在同一个视图中只能有一处分页,若需要在同一个视图中设置多个分页,却无能为力,为此,我重新对原先的代码进行了优化,增加了 ...
- [Asp.net]AspNetPager分页组件
引言 在基于Asp.net的内网系统中,分页功能是最常用的,用的最多的组件就是AspNetPager. AspNetPager 官网:http://www.webdiyer.com/aspnetpag ...
- 基于Bootstrap的Asp.net Mvc 分页
基于Bootstrap的Asp.net Mvc 分页的实现 最近写了一个mvc 的 分页,样式是基于 bootstrap 的 ,提供查询条件,不过可以自己写样式根据个人的喜好,以此分享一下.首先新建一 ...
- SQLSERVER2012的分页新功能
SQLSERVER2012的分页新功能 简介 SQL Server 2012中在Order By子句之后新增了OFFSET和FETCH子句来限制输出的行数从而达到了分页效果.相比较SQL Server ...
- 【转载】ASP.NET实现文件下载的功能
文件下载是很多网站中含有的常用功能,在ASP.NET中可以使用FileStream类.HttpRequest对象.HttpResponse对象相互结合,实现输出硬盘文件的功能.该方法支持大文件.续传. ...
- 利用 ASP.NET 的内置功能抵御 Web 攻击 (1)
摘要: Dino 总结了最常见的 Web 攻击类型,并介绍了 Web 开发人员可以如何使用 ASP.NET 的内置功能来改进安全性. 一.ASP.NET 开发人员应当始终坚持的做法 如果您正在阅读本文 ...
随机推荐
- Python性能监控
profiler是一个程序,用来描述运行时的程序性能,并且从不同方面提供统计数据加以表述.Python中含有3个模块提供这样的功能,分别是cProfile, profile和pstats.这些分析器提 ...
- Linux信号使用及自定义信号
linux自定义信号:https://www.cnblogs.com/bigben0123/p/3186661.html linux信号.值及解释:https://blog.csdn.net/luot ...
- The First Python man in Github
Python date VS(可视化了一下前几名) 查了下Github上星星最多的Python man 或许这就是目标吧 刚刚改了github.
- qt 添加程序插件目录
QApplication::addLibraryPath(QApplication::applicationDirPath()); QApplication::addLibraryPath(QAppl ...
- Win+数字快速启动/切换指定程序
Windows键+数字,可以快速启动任务栏上的程序 按下按下Win+4桌面将切换到排序第4的程序:页也就是谷歌浏览器. 今天刚发现这个小功能. 文章来源:外星人来地球 欢迎关注,有问题一起学习欢迎 ...
- C++ 中virtual 用法
一.virtual 修饰基类中的函数,派生类重写该函数: #include using namespace std; class A{ public: virtual void display(){ ...
- raid卷性能测试
#RAID卷 独立磁盘冗余阵列RAID是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份技术.组成磁盘阵列的不同方式成为R ...
- vue + elementui form resetFields方法 无法重置表单
this.$refs['form'].resetFields(); 方法无法重置.1 el-form 组件 没有添加 ref 属性 <el-form ref="form" : ...
- LoadRunne遇到的一些问题FAQ(持续更新...)
1.LR11破解完成,添加License失败,报错License security violation Loadrunner11破解成功后,用deletelicense.exe工具把License全删 ...
- hadoop目录命令
下面是经常使用到的,以此记录备忘 1.查看hadoop目录 命令: hadoop fs -ls / 2.创建目录 命令:hadoop fs -mkdir /目录名 3.将文件上传hadoop中(也就是 ...