两个类文件,点这里下载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 = "|&lt;";
  string m_PrevPageText = "&lt;&lt;";
  string m_NextPageText = "&gt;&gt;";
  string m_LastPageText = "&gt;|";

//定义事件代理
  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("&nbsp;");
    writer.Write(m_PrevPageText);
    writer.Write("&nbsp;");
   }
   else
   {
    writer.AddAttribute(HtmlTextWriterAttribute.Href,"javascript:"+Page.GetPostBackEventReference(this,"0"));
    writer.RenderBeginTag(HtmlTextWriterTag.A);
    writer.Write(m_FirstPageText);
    writer.RenderEndTag();
    writer.Write("&nbsp;");
    writer.AddAttribute(HtmlTextWriterAttribute.Href,"javascript:"+Page.GetPostBackEventReference(this,(m_CurrentPageIndex-1).ToString()));
    writer.RenderBeginTag(HtmlTextWriterTag.A);
    writer.Write(m_PrevPageText);
    writer.RenderEndTag();
    writer.Write("&nbsp;");
   }

for ( int i=startIndex;i<=endIndex;i++ )
   {
    string s = i.ToString();
    if ( m_CurrentPageIndex==i )
    {
     writer.Write("["+(i+1).ToString()+"]");
     writer.Write("&nbsp;");
    }
    else
    {
     writer.AddAttribute(HtmlTextWriterAttribute.Href,"javascript:"+Page.GetPostBackEventReference(this,s));
     writer.RenderBeginTag(HtmlTextWriterTag.A);
     writer.Write("["+(i+1).ToString()+"]");
     writer.RenderEndTag();
     writer.Write("&nbsp;");
    }
   }

if ( m_PageCount==1||m_CurrentPageIndex==(m_PageCount-1) )
   {
    writer.Write(m_NextPageText);
    writer.Write("&nbsp;");
    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("&nbsp;");
    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]相关推荐

  1. GridView,Repeater分页控件:WebPager(开源)

    一.特点: 可以用在母板.MS Ajax等控件嵌套的任何地方,支持GridView,Repeater等数据控件的分页. 二.属性: 1. PagerStyle: 设置分页样式(NextPrev,Num ...

  2. Winform分页控件之纯分页显示处理

    在之前介绍的Winform分页控件中,都以分页控件+显示表格控件作为一个整体性的控件,不可分开,这样做的目的是可以实现更多的操作,集成更多丰富的特性,减少我们开发的工作量,这种情况虽然适用于大多数的情 ...

  3. 【开源】QuickPager ASP.NET2.0分页控件V2.0.0.3 【增加了使用说明】

    ================================ 欢迎转载,但是请注明出处.本文出自博客园 .谢谢合作! ================================ 最新版本:V ...

  4. AspNetPager分页控件

    http://files.cnblogs.com/zhangweiguo3984/AspNetPager433.rar 分页是Web应用程序中最常用到的功能之一,在ASP.NET中,虽然自带了一个可以 ...

  5. iOS:分页控件UIPageControl的使用

    分页控件:UIPageControl   功能:通常搭配滚动视图一起使用,设置pagingEnabled=YES即可,UIScrollView会被分割成多个独立页面,用户的滚动体验则变成了页面翻转,一 ...

  6. AspNetPager免费开源分页控件7.4.1版发布

    前几天发布的7.4版出现了postback分页情况下客户端脚本未注册的bug,非常抱歉,7.4.1版已修正这些问题,具体更新说明如下: 修正了Postback分页且显示页索引文本框的情况下,客户端脚本 ...

  7. 使用amaze ui的分页样式封装一个通用的JS分页控件

    作为一名码农,天天百度.偶尔谷歌,所有代码全靠copy,用第三方插件,偶尔也想着造造轮子,毕竟自己的骨肉总归比较亲. 今天有点空闲时间,想起我们公司之前套的页面的分页插件上还有bug,而写那个分页插件 ...

  8. QuickPager asp.net 分页控件 转

    QuickPager asp.net 分页控件.表单控件等自定义控件下载 和介绍 最新下载地址: 自然框架的源代码.Demo.数据库.配置信息管理程序下载(2010.01.25更新) QuickCon ...

  9. asp.net分页控件使用详解【附实例下载】

    本篇文章主要对asp.net创建事务的方法进行实例介绍,具有很好的参考价值,需要的朋友一起来看下吧 一.说明 AspNetPager.dll这个分页控件主要用于asp.net webform网站,现将 ...

最新文章

  1. JSP+Servlet+JavaBean
  2. vivado中的rtl中电路图无发生成_Vivado 综合崩溃调试指南
  3. oracle 日期类型显示毫秒
  4. C语言中简单的for循环和浮点型变量
  5. Vue 动态创建实例
  6. Linux课程笔记 Crond介绍
  7. 240多个jQuery插件 功能强大 齐全
  8. java异常中的Error和Exception的区别是什么?
  9. Cocos2d-x3.2 Menu菜单的创建
  10. 学习 Java,使用哪个版本最好
  11. 现代优化算法 (二): 遗传算法 及应用举例
  12. 自动驾驶工程师的进阶之路
  13. Ubuntu笔记本设置WiFi热点
  14. nfs挂载文件系统时VFS: Unable to mount root fs on unknown-block的问题解决
  15. 整形数据之间的强制转换
  16. 路由器显示DNS服务器设置错误,路由器dns设置错误怎么处理
  17. 2021-01-19第二次Sping Boot学习汇报--利用用Spring Initializr构建项目
  18. ubuntu 截图工具flameshot(火焰截图)
  19. 胡乱捣鼓03——PID定身12cm直线追踪小车做起来~
  20. 从这些企业的数字化转型实践中,你能得到什么启发

热门文章

  1. 干货 :数据可视化的10个关键术语
  2. 【安全加密技术】 对称加密
  3. 一些关于Java的句子
  4. 金智教育CTO:大数据人才培养要先行一步
  5. Lync与Exchange 2013 UM集成:Exchange 配置
  6. 压力变动力,存储追求高效率
  7. 终端bash美化(FC)
  8. Linux12-文件系统基础
  9. 你不应该关注区块链的“杀手级应用”
  10. 测试驱动开发 测试前移_测试驱动开发简介