写自己的分页控件
2013-06-03 23:08
190 查看
首先我们创建一个Web用户控件
在 .ascx.cs里面写我们对页码条的控制,相当于一个类,继承与UserControl类
完成之后,在.ascx里面写我们的空间容器,相当于一个html页面
cs里面的strHtml输出到容器里,这里也可以用css来美化~
我们在web窗体里面用的时候直接像托控件一样拖过去
后台代码:
最后看效果
它会保持当前页在中间显示
末页
在 .ascx.cs里面写我们对页码条的控制,相当于一个类,继承与UserControl类
public partial class PageData : System.Web.UI.UserControl { public string strHtml; private int currentPage;//当前页 public int CurrentPage { get { return currentPage; } set { currentPage = value; } } private int currentPageCount;//总页数 public int CurrentPageCount { get { return currentPageCount; } set { currentPageCount = value; } } protected void Page_Load(object sender, EventArgs e) { if (CurrentPageCount <= 1) //如果只有一页,不现实分页条 { return; } int startPage = CurrentPage - 3; //这里保持当前页在页码条中间 if (startPage <= 1) { startPage = 1; } int endPage = startPage + 6; //这里保持当前页在页码条中间 if (endPage > CurrentPageCount) { endPage = CurrentPageCount; startPage = endPage - 6; if (startPage <= 1) { startPage = 1; } } StringBuilder sb = new StringBuilder(); sb.AppendFormat(" <a href=?page={0}>首页</a> ", 1); if (currentPage > 1) { sb.AppendFormat(" <a href=?page={0}>上一页</a> ", CurrentPage - 1); } else { sb.AppendFormat(" <a href=javascript:void(0)>上一页</a> "); } for (int i = startPage; i <= endPage; i++) { if (i == CurrentPage) { sb.Append(" " + i + " "); } else { sb.AppendFormat(" <a href=?page={0}>[" + i + "]</a> ", i); } } if (currentPage < CurrentPageCount) { sb.AppendFormat(" <a href=?page={0}>下一页</a> ", CurrentPage + 1); } else { sb.AppendFormat(" <a href=javascript:void(0)>下一页</a> "); } sb.AppendFormat(" <a href=?page={0}>末页</a> ", CurrentPageCount); strHtml = sb.ToString(); } }
完成之后,在.ascx里面写我们的空间容器,相当于一个html页面
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="PageData.ascx.cs" Inherits="Asp.net项目.MyControl.PageData" %> <div id="pageDiv"><%=strHtml %></div>
cs里面的strHtml输出到容器里,这里也可以用css来美化~
我们在web窗体里面用的时候直接像托控件一样拖过去
<uc1:PageData runat="server" ID="PageData" />
后台代码:
public partial class WebForm1 : System.Web.UI.Page { public List<Book> list; protected void Page_Load(object sender, EventArgs e) { int pageIndex; if (Request["page"] != null) { pageIndex = Convert.ToInt32(Request["page"]); } else { pageIndex = 1; } int maximumRows = 9; OnSaleBooksBLL bll = new OnSaleBooksBLL(); //---------------这里是我们自定义的分页控件----------------- //可以直接点出来,初始化它的属性... PageData.CurrentPage = pageIndex; PageData.CurrentPageCount = (bll.GetCount() + maximumRows - 1) / maximumRows; //----------------------------------- int startRowIndex = (pageIndex - 1) * maximumRows + 1; list = bll.GetModelList_Page(startRowIndex, maximumRows); }
最后看效果
它会保持当前页在中间显示
末页
相关文章推荐
- 自己实现的一个分页-用户控件
- 自己动手用Javascript写一个无刷新分页控件
- 以前一直用的别人的分页控件今天自己写了个方便自己(更新)使用正则表达式处理URL参数
- 使用ObjectDataSource 控件自定义自己的分页(vs2008新控件Listview)
- 自己动手写的jquery分页控件(非常简单实用)
- 自己写的一个分页控件 WebPager
- 自己实现的数据表格控件(dataTable),支持自定义样式和标题数据、ajax等各种自定义设置以及分页自定义
- 曾今的代码系列——自己的分页控件+存储过程实现分页
- 自己写的分页控件MyPager
- 自己写的分页控件
- 一步步打造自己的分页控件--1
- C#自己写的一个自定义分页控件
- c# asp.net 自己写的分页 没有使用控件原始分页
- 自己写的一个分页控件类(WinForm)
- 自己写的一个分页控件(WinForm)
- 自己写的.net分页控件,测试没有问题!
- 自己写的一个分页控件,欢迎下载源代码
- 基于linq2sql的分页控件(自己写的)
- 自己开发的一款基于PagedDataSource的datalist repeater控件,只需要在源程序中添加三行代码,即可实现通用分页
- asp.net 分页-自己写分页控件