分页控件 WebPager [ZT]
两个类文件,点这里下载DLL文件>WebPager.dll
1、 WebPager.cs
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
[assembly:TagPrefix("WebPager", "wp")]
namespace Xiaoqiao.Controls.WebPager
{
public delegate void WebPagerEventHandler(object sender, EventArgs e);
/// <summary>
/// WebPager 的摘要说明。
/// </summary>
[ DefaultProperty("CurrentPageIndex") ]
[ ToolboxData("<{0}:WebPagerControl runat=server></{0}:WebPagerControl>") ]
[ Designer("Xiaoqiao.Controls.WebPager.WebPagerDesigner") ]
[ ParseChildren(false) ]
public class WebPagerControl : WebControl,INamingContainer,IPostBackEventHandler
{
int m_CurrentPageIndex = 0;
int m_PageCount = 0;
int m_PageSize = 1;
int m_RecordCount = 0;
int m_NavNums = 10;
System.Drawing.Color m_CurrentPageNumColor = System.Drawing.Color.Red;
System.Collections.Specialized.NameValueCollection _aa;
string m_FirstPageText = "|<";
string m_PrevPageText = "<<";
string m_NextPageText = ">>";
string m_LastPageText = ">|";
//定义事件代理
public event WebPagerEventHandler PageChange;
public WebPagerControl()
{
}
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
if ( m_PageCount==0 )
{
base.Render(writer);
return;
}
int n = m_NavNums;
int r = m_CurrentPageIndex%n;
int startIndex = (m_CurrentPageIndex-r)/n * n;
int endIndex = startIndex + n - 1;
if (endIndex>=m_PageCount)
endIndex = m_PageCount-1;
if ( m_PageCount==1||m_CurrentPageIndex==0 )
{
writer.Write(m_FirstPageText);
writer.Write(" ");
writer.Write(m_PrevPageText);
writer.Write(" ");
}
else
{
writer.AddAttribute(HtmlTextWriterAttribute.Href,"javascript:"+Page.GetPostBackEventReference(this,"0"));
writer.RenderBeginTag(HtmlTextWriterTag.A);
writer.Write(m_FirstPageText);
writer.RenderEndTag();
writer.Write(" ");
writer.AddAttribute(HtmlTextWriterAttribute.Href,"javascript:"+Page.GetPostBackEventReference(this,(m_CurrentPageIndex-1).ToString()));
writer.RenderBeginTag(HtmlTextWriterTag.A);
writer.Write(m_PrevPageText);
writer.RenderEndTag();
writer.Write(" ");
}
for ( int i=startIndex;i<=endIndex;i++ )
{
string s = i.ToString();
if ( m_CurrentPageIndex==i )
{
writer.Write("["+(i+1).ToString()+"]");
writer.Write(" ");
}
else
{
writer.AddAttribute(HtmlTextWriterAttribute.Href,"javascript:"+Page.GetPostBackEventReference(this,s));
writer.RenderBeginTag(HtmlTextWriterTag.A);
writer.Write("["+(i+1).ToString()+"]");
writer.RenderEndTag();
writer.Write(" ");
}
}
if ( m_PageCount==1||m_CurrentPageIndex==(m_PageCount-1) )
{
writer.Write(m_NextPageText);
writer.Write(" ");
writer.Write(m_LastPageText);
}
else
{
writer.AddAttribute(HtmlTextWriterAttribute.Href,"javascript:"+Page.GetPostBackEventReference(this,(m_CurrentPageIndex+1).ToString()));
writer.RenderBeginTag(HtmlTextWriterTag.A);
writer.Write(m_NextPageText);
writer.RenderEndTag();
writer.Write(" ");
writer.AddAttribute(HtmlTextWriterAttribute.Href,"javascript:"+Page.GetPostBackEventReference(this,(m_PageCount-1).ToString()));
writer.RenderBeginTag(HtmlTextWriterTag.A);
writer.Write(m_LastPageText);
writer.RenderEndTag();
}
string inputId = this.ClientID+"_pagenum";
writer.AddAttribute(HtmlTextWriterAttribute.Type,"text");
writer.AddAttribute(HtmlTextWriterAttribute.Size,"3");
writer.AddAttribute(HtmlTextWriterAttribute.Id,inputId);
writer.AddAttribute(HtmlTextWriterAttribute.Value,(m_CurrentPageIndex+1).ToString());
writer.RenderBeginTag(HtmlTextWriterTag.Input);
writer.RenderEndTag();
writer.AddAttribute(HtmlTextWriterAttribute.Onclick,"javascript:"+this.ClientID+"_GoToPage();");
writer.AddAttribute(HtmlTextWriterAttribute.Type,"button");
writer.AddAttribute(HtmlTextWriterAttribute.Value,"go");
writer.RenderBeginTag(HtmlTextWriterTag.Input);
writer.RenderEndTag();
base.Render(writer);
}
private void OnPageChange(object sender, EventArgs e)
{
this.ViewState["CurrentPageIndex"] = m_CurrentPageIndex;
if (PageChange != null)
PageChange(sender,e);
}
protected override void OnLoad(EventArgs e)
{
object state;
state = this.ViewState["CurrentPageIndex"];
if (state != null)
m_CurrentPageIndex = Convert.ToInt32(state);
state = this.ViewState["RecordCount"];
if (state != null)
this.RecordCount = Convert.ToInt32(state);
string inputId = this.ClientID+"_pagenum";
string scriptKey = "webpager_script";
if ( !Page.IsClientScriptBlockRegistered(scriptKey) )
{
string script = "<script language=javascript>function "+this.ClientID+"_GoToPage(){";
script += "var gotoPage=parseInt(document.getElementById('"+inputId+"').value);";
script += "if (isNaN(gotoPage)){alert('请输入正确的页码');return;}";
script += "if ( gotoPage>"+m_PageCount+"||gotoPage<1 ){alert('页码超出范围');return;}gotoPage--;";
script += "__doPostBack('"+this.ClientID+"',gotoPage)"+";";//Page.GetPostBackEventReference(this,"gotoPage")+";";
script += "}</script>";
Page.RegisterClientScriptBlock(scriptKey,script);
}
base.OnLoad(e);
}
public int CurrentPageIndex
{
get { return m_CurrentPageIndex; }
set { m_CurrentPageIndex = value; }
}
public int RecordCount
{
get
{
return m_RecordCount;
}
set
{
int i = value;
this.ViewState["RecordCount"] = i;
m_PageCount = GetPages(i,m_PageSize);
m_RecordCount = i;
}
}
public int PageSize
{
get
{
return m_PageSize;
}
set
{
int i = value;
if (i>0)
{
m_PageCount = GetPages(m_RecordCount,i);
m_PageSize = i;
}
else
throw(new Exception("PageSize必须大于零"));
}
}
private int GetPages(int Total,int PageSize)
{
int i = Total;
int t;
if ( (i%PageSize)==0 )
t = i/PageSize;
else
t = (int)(i-i%PageSize)/PageSize+1;
return t;
}
public int NavNums
{
get
{
return m_NavNums;
}
set
{
int i = value;
if (i>0)
m_NavNums = value;
}
}
public string FirstPageText
{
get
{
return m_FirstPageText;
}
set
{
m_FirstPageText = value;
}
}
public string PrevPageText
{
get
{
return m_PrevPageText;
}
set
{
m_PrevPageText = value;
}
}
public string NextPageText
{
get
{
return m_NextPageText;
}
set
{
m_NextPageText = value;
}
}
public string LastPageText
{
get
{
return m_LastPageText;
}
set
{
m_LastPageText = value;
}
}
public System.Drawing.Color CurrentPageNumColor
{
get
{
return m_CurrentPageNumColor;
}
set
{
m_CurrentPageNumColor = value;
}
}
public System.Collections.Specialized.NameValueCollection aa
{
get { return _aa; }
set { _aa = value; }
}
#region IPostBackEventHandler 成员
public void RaisePostBackEvent(string eventArgument)
{
// TODO: 添加 WebPagerControl.RaisePostBackEvent 实现
CurrentPageIndex = int.Parse(eventArgument);
OnPageChange(this,null);
}
#endregion
}
}
2、WebPagerDesigner.cs
using System;
using System.Globalization;
namespace Xiaoqiao.Controls.WebPager
{
/// <summary>
/// WebPagerDesigner 的摘要说明。
/// </summary>
public class WebPagerDesigner : System.Web.UI.Design.ControlDesigner
{
public WebPagerDesigner()
{
}
public override string GetDesignTimeHtml()
{
WebPagerControl oControl = (WebPagerControl)Component ;
return String.Format( CultureInfo.InvariantCulture,
"<table width=\"{0}\" height=\"{1}\" bgcolor=\"#f5f5f5\" bordercolor=\"#c7c7c7\" cellpadding=\"0\" cellspacing=\"0\" border=\"1\"><tr><td valign=\"middle\" align=\"center\">WebPagerControl - <b>{2}</b></td></tr></table>",
oControl.Width,
oControl.Height,
oControl.ID ) ;
}
}
}
转载于:https://www.cnblogs.com/RobotTech/archive/2007/10/25/937123.html
分页控件 WebPager [ZT]相关推荐
- GridView,Repeater分页控件:WebPager(开源)
一.特点: 可以用在母板.MS Ajax等控件嵌套的任何地方,支持GridView,Repeater等数据控件的分页. 二.属性: 1. PagerStyle: 设置分页样式(NextPrev,Num ...
- Winform分页控件之纯分页显示处理
在之前介绍的Winform分页控件中,都以分页控件+显示表格控件作为一个整体性的控件,不可分开,这样做的目的是可以实现更多的操作,集成更多丰富的特性,减少我们开发的工作量,这种情况虽然适用于大多数的情 ...
- 【开源】QuickPager ASP.NET2.0分页控件V2.0.0.3 【增加了使用说明】
================================ 欢迎转载,但是请注明出处.本文出自博客园 .谢谢合作! ================================ 最新版本:V ...
- AspNetPager分页控件
http://files.cnblogs.com/zhangweiguo3984/AspNetPager433.rar 分页是Web应用程序中最常用到的功能之一,在ASP.NET中,虽然自带了一个可以 ...
- iOS:分页控件UIPageControl的使用
分页控件:UIPageControl 功能:通常搭配滚动视图一起使用,设置pagingEnabled=YES即可,UIScrollView会被分割成多个独立页面,用户的滚动体验则变成了页面翻转,一 ...
- AspNetPager免费开源分页控件7.4.1版发布
前几天发布的7.4版出现了postback分页情况下客户端脚本未注册的bug,非常抱歉,7.4.1版已修正这些问题,具体更新说明如下: 修正了Postback分页且显示页索引文本框的情况下,客户端脚本 ...
- 使用amaze ui的分页样式封装一个通用的JS分页控件
作为一名码农,天天百度.偶尔谷歌,所有代码全靠copy,用第三方插件,偶尔也想着造造轮子,毕竟自己的骨肉总归比较亲. 今天有点空闲时间,想起我们公司之前套的页面的分页插件上还有bug,而写那个分页插件 ...
- QuickPager asp.net 分页控件 转
QuickPager asp.net 分页控件.表单控件等自定义控件下载 和介绍 最新下载地址: 自然框架的源代码.Demo.数据库.配置信息管理程序下载(2010.01.25更新) QuickCon ...
- asp.net分页控件使用详解【附实例下载】
本篇文章主要对asp.net创建事务的方法进行实例介绍,具有很好的参考价值,需要的朋友一起来看下吧 一.说明 AspNetPager.dll这个分页控件主要用于asp.net webform网站,现将 ...
最新文章
- JSP+Servlet+JavaBean
- vivado中的rtl中电路图无发生成_Vivado 综合崩溃调试指南
- oracle 日期类型显示毫秒
- C语言中简单的for循环和浮点型变量
- Vue 动态创建实例
- Linux课程笔记 Crond介绍
- 240多个jQuery插件 功能强大 齐全
- java异常中的Error和Exception的区别是什么?
- Cocos2d-x3.2 Menu菜单的创建
- 学习 Java,使用哪个版本最好
- 现代优化算法 (二): 遗传算法 及应用举例
- 自动驾驶工程师的进阶之路
- Ubuntu笔记本设置WiFi热点
- nfs挂载文件系统时VFS: Unable to mount root fs on unknown-block的问题解决
- 整形数据之间的强制转换
- 路由器显示DNS服务器设置错误,路由器dns设置错误怎么处理
- 2021-01-19第二次Sping Boot学习汇报--利用用Spring Initializr构建项目
- ubuntu 截图工具flameshot(火焰截图)
- 胡乱捣鼓03——PID定身12cm直线追踪小车做起来~
- 从这些企业的数字化转型实践中,你能得到什么启发