前端时间开发的分页控件,满足不了现在的需求,因为涉及到 Url 重写,于是乎,又发一个,顺便散分,最近沉迷T-SQL,很久没有过来了 ,我是采用的 url 分页,用的 存储过程分页方式 ,这个 只是 用于 将 你的 显示翻页 好看一点的 来着~
先发个看看
(这两天,生病了,所以来csdn .今天老板放我假~哈哈)
using System;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Text.RegularExpressions;
using System.Web.UI;/// <summary>
///PagerControl 的摘要说明
/// </summary>
namespace YSMV.Control
{
public class UrlRewritePagerControl : System.Web.UI.UserControl
{
#region Parmeter
private string rx;
private Regex reg;
private int _pageSize = 10, _pageCount, _pageIndex = 1, _totalCount = 0, _groupNum = 5;
private string sendToUrl, queryPage = "page", _matchFirst = "$1", _matchLast = "$2", _link = "";
private bool _smart = false;
#endregion
#region HTML
private const string divstart = "<div class='digg'>";
private const string divend = "</div>";
private const string prepage = "<span class='disabled'>";
private const string nextpage = "<span class='disabled'>";
private const string currentpage = "<span class='current'>";
private const string endspan = "</span>";
private const string astart = "<a href='";
private const string ahrefend = "' title='";
private const string aaltend = "'>";
private const string aover = "</a>";
private const string prev = "<";
private const string next = ">";
#endregion
#region Properties
//记录总数
public int TotalCount
{
set { _totalCount = value; }
}
//当前页
public int PageCount
{
set { _pageCount = value; }
get { return _pageCount; }
}
//一页的记录数
public int PageSize
{
get { return _pageSize; }
set { _pageSize = value; }
}
//匹配正则
public string RX
{
get { return rx; }
set { rx = value; }
}
//匹配的Url开始部分
public string MatchLast
{
set { _matchLast = value; }
get { return _matchLast; }
}
//匹配的Url结束部分
public string MatchFirst
{
set { _matchFirst = value; }
get { return _matchFirst; }
}
public int GroupNum
{
get { return _groupNum; }
set { _groupNum = value; }
}
public string Link
{
get { return _link; }
set { _link = value; }
}
public bool Smart
{
get { return _smart; }
set { _smart = value; }
}
#endregion
public UrlRewritePagerControl()
{
sendToUrl = Context.Request.RawUrl;
if (Context.Request[queryPage] != null)
{
int.TryParse(Context.Request[queryPage].ToString(), out _pageIndex);
}
}
先发个看看
(这两天,生病了,所以来csdn .今天老板放我假~哈哈)
using System;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Text.RegularExpressions;
using System.Web.UI;/// <summary>
///PagerControl 的摘要说明
/// </summary>
namespace YSMV.Control
{
public class UrlRewritePagerControl : System.Web.UI.UserControl
{
#region Parmeter
private string rx;
private Regex reg;
private int _pageSize = 10, _pageCount, _pageIndex = 1, _totalCount = 0, _groupNum = 5;
private string sendToUrl, queryPage = "page", _matchFirst = "$1", _matchLast = "$2", _link = "";
private bool _smart = false;
#endregion
#region HTML
private const string divstart = "<div class='digg'>";
private const string divend = "</div>";
private const string prepage = "<span class='disabled'>";
private const string nextpage = "<span class='disabled'>";
private const string currentpage = "<span class='current'>";
private const string endspan = "</span>";
private const string astart = "<a href='";
private const string ahrefend = "' title='";
private const string aaltend = "'>";
private const string aover = "</a>";
private const string prev = "<";
private const string next = ">";
#endregion
#region Properties
//记录总数
public int TotalCount
{
set { _totalCount = value; }
}
//当前页
public int PageCount
{
set { _pageCount = value; }
get { return _pageCount; }
}
//一页的记录数
public int PageSize
{
get { return _pageSize; }
set { _pageSize = value; }
}
//匹配正则
public string RX
{
get { return rx; }
set { rx = value; }
}
//匹配的Url开始部分
public string MatchLast
{
set { _matchLast = value; }
get { return _matchLast; }
}
//匹配的Url结束部分
public string MatchFirst
{
set { _matchFirst = value; }
get { return _matchFirst; }
}
public int GroupNum
{
get { return _groupNum; }
set { _groupNum = value; }
}
public string Link
{
get { return _link; }
set { _link = value; }
}
public bool Smart
{
get { return _smart; }
set { _smart = value; }
}
#endregion
public UrlRewritePagerControl()
{
sendToUrl = Context.Request.RawUrl;
if (Context.Request[queryPage] != null)
{
int.TryParse(Context.Request[queryPage].ToString(), out _pageIndex);
}
}
解决方案 »
- ASP.NET服务器控件如何在div块中垂直居中显示??
- [高分]急,求解。关于checkbox的问题。
- 你会对网页上的所有TEXTBOX验证吗?
- 查询DATATABLE的问题
- 初学asp.net,问个比较简单的问题?
- 使用jmail发邮件时,添加邮件附件时,报错Cannot open file C:\Documents and Settings\Administrator\桌面\fax.xls,该文件没被打开
- erp系统
- 页面的图片修改问题
- SQL Server 2005 Standard Edition版本 可不可以作为远程服务器
- asp.net工程可不可以实现异地开发,即将项目工程建立在另一台计算机上??
- jquery 与服务器控件ID
- 在updatepanel里如何使用Response.Write(js)
protected override void Render(HtmlTextWriter writer)
{
//计算总页数
_pageCount = (_totalCount - 1) / _pageSize + 1;
if (_pageIndex > _pageCount || _pageIndex <= 0)
_pageIndex = 1;
reg = new Regex(rx, RegexOptions.IgnoreCase | RegexOptions.Compiled);
//开始div
writer.Write(divstart);
if (_smart)
{
writer.Write(_pageIndex);
writer.Write("/");
writer.Write(_pageCount+" ");
}
//输入 上一页按钮
if (_pageIndex == 1)
{
writer.Write(prepage);
writer.Write(prev);
writer.Write(endspan);
}
else
{ writer.Write(astart);
writer.Write(GetUrl(reg, _pageIndex - 1));
writer.Write(ahrefend);
writer.Write("上一页");
writer.Write(aaltend);
writer.Write(prev);
writer.Write(aover);
}
if (!_smart)
{
//计算当前的组
int currentgroup = (_pageIndex - 1) / _groupNum + 1;
//所有组
int groupcount = (_pageCount - 1) / _groupNum + 1;
//当前组开始的位置
int start = (currentgroup - 1) * _groupNum * _pageSize + 1;
//计算剩余组别的页数 int lesssize = (_totalCount - start) / _pageSize + 1;
//计算当前组显示的页数
int size = Math.Min(_groupNum, lesssize);
//当不是最后一组的时候
if (currentgroup < groupcount)
{
for (int i = 1; i <= size; i++)
{
//显示当前页
//当前页码
int cur = (currentgroup - 1) * _groupNum + i;
if (_pageIndex == cur)
{
writer.Write(currentpage);
writer.Write(cur);
writer.Write(endspan);
}
//其他页
else
{
writer.Write(astart);
writer.Write(GetUrl(reg, cur));
writer.Write(ahrefend);
writer.Write("第" + cur + "页");
writer.Write(aaltend);
writer.Write(cur);
writer.Write(aover);
}
}
writer.Write("...");
writer.Write(astart);
writer.Write(GetUrl(reg, _pageCount));
writer.Write(ahrefend);
writer.Write("第" + _pageCount + "页");
writer.Write(aaltend);
writer.Write(_pageCount);
writer.Write(aover);
}
else
{
for (int i = 1; i <= size; i++)
{
//显示当前页
//当前页码
int cur = (currentgroup - 1) * _groupNum + i;
if (_pageIndex == cur)
{
writer.Write(currentpage);
writer.Write(cur);
writer.Write(endspan);
}
//其他页
else
{
writer.Write(astart);
writer.Write(GetUrl(reg, cur));
writer.Write(ahrefend);
writer.Write("第" + cur + "页");
writer.Write(aaltend);
writer.Write(cur);
writer.Write(aover);
}
}
}
}
//输入下一页按钮
if (_pageIndex == _pageCount)
{
writer.Write(nextpage);
writer.Write(next);
writer.Write(endspan);
}
else
{
writer.Write(astart);
writer.Write(GetUrl(reg, _pageIndex + 1));
writer.Write(ahrefend);
writer.Write("下一页");
writer.Write(aaltend);
writer.Write("下一页" + next);
writer.Write(aover);
}
//结束div
writer.Write(divend);
}
private string GetUrl(Regex reg, int pageindex)
{ string a = reg.Replace(sendToUrl, _matchFirst);
string b = reg.Replace(sendToUrl, _matchLast);
if (b == null)
b = "";
return a + pageindex.ToString() + b + _link;
}
}
}
对了忘记 说了 这个是 利用 匹配Url 讲起截取 然后 再保存 批凑当前页码
使用的:
<%@ Register Namespace="YSMV.Control" TagPrefix="Ysmv" %> 页面注册
<Ysmv:UrlRewritePagerControl runat="server" GroupNum="5" ID="pager" MatchFirst="$1"
MatchLast="$2" Smart="false" />放下
<Ysmv:UrlRewritePagerControl runat="server" GroupNum="5" ID="pager" MatchFirst="$1"
MatchLast="$2" Smart="false" />
然后
在 *.aspx.cs
下
pager.RX = @"(" + Request.ApplicationPath + @"/s-.*--).*(-.*----.*-.*-.*-.*-.*-.*-.*-0\.html)";
pager.PageSize = 一页多少记录;
pager.TotalCount=设置 总记录数...;
DIV.digg A {
BORDER-RIGHT: #aaaadd 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #aaaadd 1px solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 2px; MARGIN: 2px; BORDER-LEFT: #aaaadd 1px solid; COLOR: #000099; PADDING-TOP: 2px; BORDER-BOTTOM: #aaaadd 1px solid; TEXT-DECORATION: none
}
DIV.digg A:hover {
BORDER-RIGHT: #000099 1px solid; BORDER-TOP: #000099 1px solid; BORDER-LEFT: #000099 1px solid; COLOR: #000; BORDER-BOTTOM: #000099 1px solid
}
DIV.digg A:active {
BORDER-RIGHT: #000099 1px solid; BORDER-TOP: #000099 1px solid; BORDER-LEFT: #000099 1px solid; COLOR: #000; BORDER-BOTTOM: #000099 1px solid
}
DIV.digg SPAN.current {
BORDER-RIGHT: #000099 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #000099 1px solid; PADDING-LEFT: 5px; FONT-WEIGHT: bold; PADDING-BOTTOM: 2px; MARGIN: 2px; BORDER-LEFT: #000099 1px solid; COLOR: #fff; PADDING-TOP: 2px; BORDER-BOTTOM: #000099 1px solid; BACKGROUND-COLOR: #000099
}
DIV.digg SPAN.disabled {
BORDER-RIGHT: #eee 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #eee 1px solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 2px; MARGIN: 2px; BORDER-LEFT: #eee 1px solid; COLOR: #ddd; PADDING-TOP: 2px; BORDER-BOTTOM: #eee 1px solid
}
小毛,大大的给分。俺是混子
今天没事 还 继续上次的文章写了
http://www.cnblogs.com/bhtfg538/archive/2008/11/25/1341016.html
http://www.cnblogs.com/bhtfg538/archive/2008/12/16/1355957.html
大家看看
汗...
原来看过他的
呵呵
通用类型的 我难得正 控件的CSS
我是已经有了分页
然后显示 重写后的页码而已
哇哈
顶下啊!
嘿嘿!