小白写的一个ASP.NET分页控件,仅供娱乐
无聊,第一次写博客,自己动手写了一个分页控件。由于我是新手,有很多地方写得不够好,希望各位大牛多多指正。哈哈哈
/// <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>
小白写的一个ASP.NET分页控件,仅供娱乐的更多相关文章
- asp.net分页控件
一.说明 AspNetPager.dll这个分页控件主要用于asp.net webform网站,现将整理代码如下 二.代码 1.首先在测试页面Default.aspx页面添加引用 <%@ Reg ...
- 自己动手用Javascript写一个无刷新分页控件
.NET技术交流群:337901356 ,欢迎您的加入! 对 于一个用户体验好的网站来说,无刷新技术是很重要的,无刷新,顾名思义,就是局部刷新数据,有用过Asp.net Web Form技术开发网页的 ...
- asp.net分页控件库
AspNetPager分页控件 AspNetPager分页控件解决了分页中的很多问题,直接采用该控件进行分页处理,会将繁琐的分页工作变得简单化,下面是我如何使用AspNetPager控件进行分页处理的 ...
- 【asp.net爬虫】asp.NET分页控件抓取第n页数据 javascript:__doPostBack
最近在模拟HTTP请求抓取数据,但是服务器是asp.net开发的 分页控件代码 <tr> <td align="left">共 210&am ...
- 自己写的简单的jQuery分页控件
因为是内部项目,需要分页控件,网上找了一大堆,给领导一看,都说不行,原因很简单,太复杂,领导就想要个简单点的,类似百度的分页,可是自己也没写过Jquery控件,硬着头皮找了些资料,写了这个分页控件,目 ...
- ASP.NET 分页控件
using System; using System.ComponentModel; using System.Web; using System.Web.UI; using System.Web.U ...
- 对自写的Asp.Net分页控件的应用方式(异步无刷新分页)
前台代码 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" co ...
- 我学习的自定义ASP.NET分页控件
public class MyPagecontroll { public int TotalCount { get; set; }//数据的总条数 public int PageSize { get; ...
- .net分页控件简单实现
.net分页控件简单实现 好久好久没写博客了.....最近写了一个.net的分页控件,放到园子里...你觉得好,就点个赞,不好呢,就告诉我为啥吧.... 是使用Request.QueryString的 ...
随机推荐
- Lua操作符的优先级
lua 操作符的优先级 lua操作符的优先级 如表所示(从高到低) 在二元操作符中,除了指数操作符 “^” 和连接操作符 “..” 是 ”右结合” 的,是所有其他操作符都是 “左结合” 的.因此如 ...
- 【Android】登陆界面设计
界面布局 布局其实很简单,用相对布局累起来就可以了,然后注册和记住密码这两个控件放在一个水平线性布局里 界面底部还设置了一个QQ一键登录的入口,可以直接用. 控件的ID命名有点乱 <?xml v ...
- Aizu - 1379 Parallel Lines
平行直线 题意:给出一些点,这些点两两相连成一条直线,问最多能连成多少条直线. 思路:暴力出奇迹!!记得当时比赛做这道题的时候一直依赖于板子,结果却限制了自己的思路,这得改.dfs直接暴力,但是需要将 ...
- 新版本的molar mass(uva-1586)明明debug过了,各种测试还是WA真是气死我了
#include <bits/stdc++.h> using namespace std; double trans(string a) { stringstream ss; ss< ...
- 第六节:web爬虫之urllib(二)
二.urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, metho ...
- 【[Offer收割]编程练习赛12 C】矩形分割
[题目链接]:http://hihocoder.com/problemset/problem/1495 [题意] [题解] 把每个方块都再分成3*3的小块; 这样; 对于一个方块来说 如果是'\' 则 ...
- 垂直相邻margin合并解决方法
块级元素的垂直相邻外边距会合并,水平边距永远不会重合. 行内元素实际上不占上下外边距,左右外边距也不会合并.浮动元素的外边距也不会合并. 外边距重叠的意义 外边距的重叠只产生在普通流文档的上下外边距之 ...
- hdu 4081 最小生成树变形
/*关于最小生成树的等效边,就是讲两个相同的集合连接在一起 先建立一个任意最小生成树,这条边分开的两个子树的节点最大的一个和为A,sum为最小生成树的权值和,B为sum-当前边的权值 不断枚举最小生成 ...
- LightOJ - 1148 - Mad Counting
先上题目: 1148 - Mad Counting PDF (English) Statistics Forum Time Limit: 0.5 second(s) Memory Limit: 3 ...
- Linux下C++开发教程收集
http://blog.csdn.net/wangfengwf/article/category/1315687 http://wiki.jikexueyuan.com/list/c/(极客学院C++ ...