无聊,第一次写博客,自己动手写了一个分页控件。由于我是新手,有很多地方写得不够好,希望各位大牛多多指正。哈哈哈

 /// <summary>
/// 分页控件
/// </summary>
public class Pager
{
/// <summary>
/// 每页记录行数参数名称
/// </summary>
public string PageSizeName { get; set; }
/// <summary>
/// 分页当前索引页参数名称
/// </summary>
public string PageIndexName { get; set; } /// <summary>
/// 每页记录行数
/// </summary>
public int PageSize { get; private set; }
/// <summary>
/// 分页当前索引页
/// </summary>
public int PageIndex { get; private set; }
/// <summary>
/// 总记录行数
/// </summary>
public int TotalCount { get; private set; }
/// <summary>
/// 分页摁钮最大显示数量
/// </summary>
public int MaxDisplayCount { get; set; } /// <summary>
/// 是否显示上一页摁钮
/// </summary>
public bool ShowPrevPage { get; set; }
/// <summary>
/// 是否显示下一页摁钮
/// </summary>
public bool ShowNextPage { get; set; }
/// <summary>
/// 是否显示第一页摁钮
/// </summary>
public bool ShowFirstPage { get; set; }
/// <summary>
/// 是否显示最后一页摁钮
/// </summary>
public bool ShowLastPage { get; set; } /// <summary>
/// 上一页摁钮显示文本
/// </summary>
public string PrevPageText { get; set; }
/// <summary>
/// 下一页摁钮显示文本
/// </summary>
public string NextPageText { get; set; }
/// <summary>
/// 第一页摁钮显示文本
/// </summary>
public string FirstPageText { get; set; }
/// <summary>
/// 最后一页摁钮显示文本
/// </summary>
public string LastPageText { get; set; } /// <summary>
/// 上一页摁钮样式
/// </summary>
public string PrevPageClass { get; set; }
/// <summary>
/// 下一页摁钮样式
/// </summary>
public string NextPageClass { get; set; }
/// <summary>
/// 第一页摁钮样式
/// </summary>
public string FirstPageClass { get; set; }
/// <summary>
/// 最后一页摁钮样式
/// </summary>
public string LastPageClass { get; set; } /// <summary>
/// 普通分页摁钮样式
/// </summary>
public string ANormalClass { get; set; }
/// <summary>
/// 选中分页摁钮样式
/// </summary>
public string ACurrentClass { get; set; } /// <summary>
/// 分页控件构造函数
/// </summary>
/// <param name="PageIndex">当前选中页索引</param>
/// <param name="PageSize">每页显示记录行数</param>
/// <param name="TotalCount">总记录行数</param>
/// <param name="UrlAndQuery">分页控件回传地址</param>
public Pager(int PageIndex, int PageSize, int TotalCount)
{
this.PageSize = PageSize;
this.PageIndex = PageIndex;
this.TotalCount = TotalCount;
this.MaxDisplayCount = ; this.PageSizeName = "PageSize";
this.PageIndexName = "PageIndex";
this.ACurrentClass = "current"; this.ShowPrevPage = true;
this.ShowNextPage = true;
this.ShowFirstPage = true;
this.ShowLastPage = true; this.PrevPageText = "<";
this.NextPageText = ">";
this.FirstPageText = "|<";
this.LastPageText = ">|";
} /// <summary>
/// 生成分页控件Html代码段
/// </summary>
/// <returns></returns>
public string GeneratePagerHtml()
{
// 解析Url,对分页索引键值进行特殊处理
var request = HttpContext.Current.Request;
var keys = request.QueryString.AllKeys;
var paramList = new List<string>();
if (keys.HasItem())
{
foreach (var key in keys)
{
if (key == PageIndexName)
{
continue;
}
var value = HttpUtility.UrlEncode(request.QueryString[key]);
paramList.Add(string.Format("{0}={1}", key, value));
}
}
paramList.Add(string.Format("{0}=", PageIndexName));
var query = paramList.Join("&"); // 对分页摁钮显示的数量和范围做处理
var PageCount = (int)Math.Ceiling((double)TotalCount / PageSize);
var startPage = PageIndex - MaxDisplayCount / + ;
startPage = startPage < ? : startPage;
var endPage = startPage + MaxDisplayCount - ;
endPage = endPage > PageCount ? PageCount : endPage;
startPage = endPage - MaxDisplayCount + ;
startPage = startPage < ? : startPage; var a = "<a href=\"?{0}{1}\" class=\"{2}\">{3}</a>";
var aString = new StringBuilder();
for (var nowPage = startPage; nowPage <= endPage; ++nowPage)
{
var nowAClass = nowPage == PageIndex ? ACurrentClass : ANormalClass;
aString.AppendFormat(a, query, nowPage, nowAClass, nowPage);
} // 对上一页摁钮做处理
string PrevPage = null;
if (ShowPrevPage)
{
var PrevPageIndex = PageIndex - ;
PrevPageIndex = PrevPageIndex < ? : PrevPageIndex;
PrevPage = string.Format(a, query, PrevPageIndex, PrevPageClass, PrevPageText);
} // 对下一页摁钮做处理
string NextPage = null;
if (ShowNextPage)
{
var NextPageIndex = PageIndex + ;
NextPageIndex = NextPageIndex > PageCount ? PageCount : NextPageIndex;
NextPage = string.Format(a, query, NextPageIndex, NextPageClass, NextPageText);
} // 对第一页摁钮做处理
string FirstPage = null;
if (ShowFirstPage)
{
FirstPage = string.Format(a, query, , FirstPageClass, FirstPageText);
} // 对最后一页摁钮做处理
string LastPage = null;
if (ShowLastPage)
{
LastPage = string.Format(a, query, PageCount, LastPageClass, LastPageText);
} // 分页控件Html代码段
var htmlTemp = "<div>{0}{1}{2}{3}{4}</div><div>第 {5}/{6} 页,{7} 条/页,共 {8} 条记录</div>";
var PagerHtml = string.Format(htmlTemp, FirstPage, PrevPage, aString, NextPage, LastPage, PageIndex, PageCount, PageSize, TotalCount); return PagerHtml;
}
}

Default.aspx.cs:

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using AspNetPager; namespace Test5
{
public partial class _Default : System.Web.UI.Page
{
public int PageIndex
{
get
{
var pageIndex = ;
try
{
pageIndex = Convert.ToInt32(Request.QueryString["PageIndex"].ToString());
}
catch { }
return pageIndex;
}
} public int PageSize
{
get
{
var PageSize = ;
try
{
PageSize = Convert.ToInt32(Request.QueryString["PageSize"].ToString());
}
catch { }
return PageSize;
}
} protected void Page_Load(object sender, EventArgs e)
{
var pager = new Pager(PageIndex, PageSize, );
this.Pager.InnerHtml = pager.CeneratePagerHtml();
}
}
}

Default.aspx:

 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Test5._Default" %>

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style type="text/css">
.pager a
{
color: Blue;
width: 40px;
height: 25px;
border: 1px solid #CCC;
margin: 0px 5px;
text-align: center;
line-height: 25px;
vertical-align: middle;
text-decoration: none;
display: inline-block;
}
.pager a:hover, .pager a.current
{
background-color: #555;
color: White;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div id="Pager" runat="server" class="pager">
</div>
</form>
</body>
</html>

最新文章

  1. Opengl中矩阵和perspective/ortho的相互转换
  2. es6分享——变量的解构赋值
  3. 【原创翻译】初识Unity中的Compute Shader
  4. 使用js把json字符串转为js对象的方法
  5. HttpServlet 详解(注!仿)
  6. php分页类代码带分页样式效果(转)
  7. Spring冲刺阶段二(1)
  8. Make 教程
  9. 一起刷LeetCode2-Add Two Numbers
  10. xmlDom
  11. C#中使用SHA1和MD5加密字符串
  12. OpenCV探索之路(八):重映射与仿射变换
  13. python——字符串 &amp; 正则表达
  14. Ubuntu 14.04下Hadoop2.4.1集群安装配置教程
  15. Linux---基础命令(二)
  16. 班级作业:Java Web环境的搭建
  17. C++面试题:list和vector有什么区别
  18. 如何使用jackson美化输出json/xml
  19. node+express搭建个人网站(1)
  20. 训练指南 UVALive - 5713(最小生成树 + 次小生成树)

热门文章

  1. CF17E Palisection (回文自动机+DP)
  2. 找零钱的算法实现(Java)
  3. php 导出Excel 不用安装插件、开启配置
  4. C#学习笔记_12_枚举&amp;结构体
  5. Codeforces 939D - Love Rescue
  6. 【IntelliJ IDEA】idea上安装Translation插件后,需要AppKey才能生效的解决方案
  7. 【LeetCode Weekly Contest 26 Q4】Split Array with Equal Sum
  8. everyday two problems / 3.1
  9. qwb与整数对
  10. nyoj_42_一笔画问题_201403181935