分页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. 【零基础】使用Tensorflow实现神经网络

    一.序言 前面已经逐步从单神经元慢慢“爬”到了神经网络并把常见的优化都逐个解析了,再往前走就是一些实际应用问题,所以在开始实际应用之前还得把“框架”翻出来,因为后面要做的工作需要我们将精力集中在业务而 ...

  2. php手记之01-tp5框架安装

    1.1.介绍 在web领域,PHP是所有编程语言中比较受欢迎的一门语言! PHP已经诞生出几十种编程框架!但国内最热门和使用率最好的框架有Thinkphp和Laravel这两款PHP框架! 1.2.为 ...

  3. ROC与AUC的定义与使用详解

    分类模型评估: 指标 描述 Scikit-learn函数 Precision 精准度 from sklearn.metrics import precision_score Recall 召回率 fr ...

  4. hwclock设置时间的调用过程是怎样的?

    调用过程如下: hwclock -w -> xioctl(RTC_SET_TIME); -> rtc_dev_ioctl() -> rtc_set_time()

  5. PHP松散比较与严格比较的区别详解

    在PHP中相等的比较有两种,松散比较和严格比较,当使用松散比较时,如果进行比较的两个操作数类型不同,那么会对操作数进行适当的类型转换,如果转换后的值相同则认为两个操作数相等.而使用严格比较时,如果两个 ...

  6. 2013年各大小IT公司待遇,绝对真实,一线数据!(初版)

    本人西电硕士,根据今年找工作的情况以及身边同学的汇总,总结各大公司的待遇如下,吐血奉献给各位学弟学妹,公司比较全,你想去的公司不在这里面,基本上是无名小公司了:无名小公司有时也很给力哦以下绝对是各大公 ...

  7. 阶段5 3.微服务项目【学成在线】_day09 课程预览 Eureka Feign_09-课程详情页面静态化-静态页面测试

    4 课程详情页面静态化 4.1 静态页面测试 4.1.1 页面内容组成 我们在编写一个页面时需要知道哪些信息是静态信息,哪些信息为动态信息,下图是页面的设计图: 打开静态页面,观察每部分的内容. 红色 ...

  8. node.js写巨大的xlsx

    一般用node-xlsx写xlsx文件的话局要把数据全部放在内存里面再写到文件里,如果文件很大的话就会导致内存吃不消. 可以使用PySpreadsheet这个npm库,他支持写很大的文件. PySpr ...

  9. 求数值的n次方根

    二分法 float SqrtByBisection(float n) //用二分法 { if(n<0) //小于0的按照你需要的处理 return n; float mid,last; floa ...

  10. Jenkins增加日志查看内容. 如何查看Jenkins插件的日志?

    进入Jenkins日志项 添加新的日志记录 把插件的GroupID信息填入 对应的源代码 日志生成代码 执行插件,即可查看插件里的日志输出