分页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)功能的更多相关文章

  1. asp.net mvc 的几种分页Pager

    第一种 /// <summary> /// 分页Pager显示 /// </summary> /// <param name="html">&l ...

  2. ASP.NET MVC分页组件MvcPager 2.0版发布暨网站全新改版

    MvcPager分页控件是在ASP.NET MVC Web应用程序中实现分页功能的一系列扩展方法,该分页控件的最初的实现方法借鉴了网上流行的部分源代码, 尤其是ScottGu的PagedList< ...

  3. asp.net mvc 自定义pager封装与优化

    asp.net mvc 自定义pager封装与优化 Intro 之前做了一个通用的分页组件,但是有些不足,从翻页事件和分页样式都融合在后台代码中,到翻页事件可以自定义,再到翻页和样式都和代码分离, 自 ...

  4. ASP.NET MVC分页实现之改进版-增加同一个视图可设置多个分页

    我之前就已经实现了ASP.NET MVC分页(查看该博文),但它有局限性,必须确保在同一个视图中只能有一处分页,若需要在同一个视图中设置多个分页,却无能为力,为此,我重新对原先的代码进行了优化,增加了 ...

  5. [Asp.net]AspNetPager分页组件

    引言 在基于Asp.net的内网系统中,分页功能是最常用的,用的最多的组件就是AspNetPager. AspNetPager 官网:http://www.webdiyer.com/aspnetpag ...

  6. 基于Bootstrap的Asp.net Mvc 分页

    基于Bootstrap的Asp.net Mvc 分页的实现 最近写了一个mvc 的 分页,样式是基于 bootstrap 的 ,提供查询条件,不过可以自己写样式根据个人的喜好,以此分享一下.首先新建一 ...

  7. SQLSERVER2012的分页新功能

    SQLSERVER2012的分页新功能 简介 SQL Server 2012中在Order By子句之后新增了OFFSET和FETCH子句来限制输出的行数从而达到了分页效果.相比较SQL Server ...

  8. 【转载】ASP.NET实现文件下载的功能

    文件下载是很多网站中含有的常用功能,在ASP.NET中可以使用FileStream类.HttpRequest对象.HttpResponse对象相互结合,实现输出硬盘文件的功能.该方法支持大文件.续传. ...

  9. 利用 ASP.NET 的内置功能抵御 Web 攻击 (1)

    摘要: Dino 总结了最常见的 Web 攻击类型,并介绍了 Web 开发人员可以如何使用 ASP.NET 的内置功能来改进安全性. 一.ASP.NET 开发人员应当始终坚持的做法 如果您正在阅读本文 ...

随机推荐

  1. Kettle中ETL的效率优化

    ETL效率优化 开启数据库日志记录及性能监控 如果我们想要优化一个ETL(KTR或者KJB)的性能,我们首先需要知道的就是它的瓶颈在哪里.而这些信息一般只能在ETL运行的步骤度量中看到,并且是不会持久 ...

  2. Spring boot 集成Solr

    首先安装Solr 集成 ikanalyzer ,可以参考 https://www.cnblogs.com/lick468/p/10867492.html https://www.cnblogs.com ...

  3. SQL-W3School-高级:SQL 数据库

    ylbtech-SQL-W3School-高级:SQL 数据库 1.返回顶部 1. 现代的 SQL 服务器构建在 RDBMS 之上. DBMS - 数据库管理系统(Database Managemen ...

  4. osgOcean编译

    E:\Visual Studio 2015\install\VC>e: E:\Visual Studio 2015\install\VC>E:\Visual Studio 2015\ins ...

  5. spring bean容器加载后执行初始化处理@PostConstruct

    先说业务场景,我在系统启动后想要维护一个List常驻内存,因为我可能经常需要查询它,但它很少更新,而且数据量不大,明显符合缓存的特质,但我又不像引入第三方缓存.现在的问题是,该List的内容是从数据库 ...

  6. python调用HTMLTestRunner+unittest实现一次执行多个测试类,并生成与每个测试类对应的测试报告,具体看代码,附上整个project代码

    python自动化框架雏形,根据自己需要封装:ui自动化,接口自动化均可适用,python版本为python3.x,不要问我为什么不用python2.x,附上整个project代码:http://fi ...

  7. LeetCode_104. Maximum Depth of Binary Tree

    104. Maximum Depth of Binary Tree Easy Given a binary tree, find its maximum depth. The maximum dept ...

  8. DELPHI中 screen.Cursor:=crhourglass; adoQuery.close; adoquery.Open; screen.Cursor:=crdefault;啥意思

    鼠标忙这段代码大概是用来演示鼠标的用法的.具体解释如下: 使鼠标指针为沙漏状.(以表示程序正忙)screen.Cursor:=crhourglass; 把(打开的)数据库关闭.adoQuery.clo ...

  9. react 打印页面怎么实现?

    2017-11-10 react 打印页面怎么实现?

  10. 关于lib和dll

    关于lib和dll 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明:这里说的就是静态链接库LIB和动态链接库DL,有些时候经常弄混淆这两个东西,这里基于 ...