<%@ Control Language= "C#" AutoEventWireup= "true" CodeBehind= "Pageing1.ascx.cs" Inherits= "EB.Mall.Services.UI.Web.Pageing1" %> <style type= "text/css" > ul { list-style:none; } ul li { float :left; /* 向左漂移,将竖排变为横排 */ } </style> <div id= "divMain" runat= "server" style= "text-align:center;" > <input type= "hidden" runat= "server" id= "hidPageIndex" value= "0" /> <input type= "hidden" runat= "server" id= "hidPageCount" value= "0" /> <input type= "hidden" runat= "server" id= "hidToPage" value= "0" /> <asp:Repeater ID= "rptPageing" runat= "server" OnItemDataBound= "rptPageing_ItemDataBound" > <HeaderTemplate> <ul> <li> <asp:LinkButton ID= "linkFirst" CommandArgument= "f" OnCommand= "linkFirst_Command" runat= "server" >首页</asp:LinkButton> </li> <li> <asp:LinkButton ID= "linkPrev" CommandArgument= "p" OnCommand= "linkFirst_Command" runat= "server" >上一页</asp:LinkButton> </li> </HeaderTemplate> <ItemTemplate> <li> <asp:LinkButton ID= "linkItem" CommandArgument= "i" OnCommand= "linkFirst_Command" CommandName= "" runat= "server" ><%#Container.DataItem %></asp:LinkButton> </li> </ItemTemplate> <FooterTemplate> <li> <asp:LinkButton ID= "linkNext" CommandArgument= "n" OnCommand= "linkFirst_Command" runat= "server" >下一页</asp:LinkButton> </li> <li> <asp:LinkButton ID= "linkLast" CommandArgument= "l" OnCommand= "linkFirst_Command" runat= "server" >末页</asp:LinkButton> </li> <li> <asp:Label ID= "lblStatistic" runat= "server" ></asp:Label> </li> <li> 转到第 <asp:TextBox ID= "txtToPage" Width= "25" Height= "12" runat= "server" ></asp:TextBox>页 <asp:Button ID= "btnToPage" runat= "server" Text= "确定" OnClick= "btnToPage_Click" OnClientClick= "return onClientClick(this);" /> </li> </ul> </FooterTemplate> </asp:Repeater> </div> <script type= "text/javascript" > function onClientClick(obj) { var toPageIndex= obj.previousElementSibling.value; var toPageIndex try { var toPageIndex=parseInt(obj.previousElementSibling.value); var totalCount=parseInt(document.getElementById( "<%=hidPageCount.ClientID%>" ).value ); if (!toPageIndex||toPageIndex<=0||toPageIndex>totalCount) { alert( "页码输入错误!" ); return false ; } } catch (e){} document.getElementById( "<%=hidToPage.ClientID%>" ).value = obj.previousElementSibling.value; return true ; } </script> |
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace EB.Mall.Services.UI.Web { public partial class Pageing1 : System.Web.UI.UserControl { public class PageingEventArgs { public PageingEventArgs( int pageIndex) { this .pageIndex = pageIndex; } private int pageIndex = 0; public int PageIndex { get { return this .pageIndex; } } } public delegate void PageingHandler( object obj, PageingEventArgs e, out int pageCount); public event PageingHandler OnPageing; private int showPageCount = 5; protected void Page_Load( object sender, EventArgs e) { if (!IsPostBack&& this .loadShow) { GoFirstPage(); } } public void GoFirstPage() { PageingMethod(1); } public void GoPage( int pageIndex) { PageingMethod(pageIndex); } private void PageingMethod( int pageIndex) { int pageCount = 0; if (OnPageing != null ) { OnPageing( this , new PageingEventArgs(pageIndex), out pageCount); if (pageCount <= 0) { this .divMain.InnerText = "暂无数据" ; } else { this .PageIndex = pageIndex; int bs = this .PageIndex % showPageCount; int startIndex = 0; if (bs == 0) { startIndex = this .PageIndex - 4; if (startIndex <= 0) { startIndex = 1; } } else { startIndex = ( this .PageIndex / showPageCount) * showPageCount + 1; } int endIndex = startIndex + 4; if (endIndex > pageCount) { endIndex = pageCount; } List< int > itemList = new List< int >(); for ( int i = startIndex; i <= endIndex; i++) { itemList.Add(i); } this .PageCount = pageCount; this .rptPageing.DataSource = itemList; this .rptPageing.DataBind(); } } } private bool loadShow = false ; /// <summary> /// 是否页面首次进入不点查询就要显示数据 /// </summary> public bool LoadShow { set { loadShow = value; } } /// <summary> /// 当前页 /// </summary> public int PageIndex { get { int pageIndex = 0; int .TryParse( this .hidPageIndex.Value, out pageIndex); return pageIndex; } set { this .hidPageIndex.Value = value.ToString(); } } /// <summary> /// 页数 /// </summary> public int PageCount { get { int pagecount = 0; int .TryParse( this .hidPageCount.Value, out pagecount); return pagecount; } set { this .hidPageCount.Value = value.ToString(); } } protected void rptPageing_ItemDataBound( object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType.Header) { LinkButton linkFirst = e.Item.FindControl( "linkFirst" ) as LinkButton; LinkButton linkPrev = e.Item.FindControl( "linkPrev" ) as LinkButton; if (PageIndex == 1) { linkFirst.Enabled = false ; linkPrev.Enabled = false ; } else { linkFirst.Enabled = true ; linkPrev.Enabled = true ; } } else if (e.Item.ItemType == ListItemType.Footer) { LinkButton linkLast = e.Item.FindControl( "linkLast" ) as LinkButton; LinkButton linkNext = e.Item.FindControl( "linkNext" ) as LinkButton; if (PageIndex == PageCount) { linkLast.Enabled = false ; linkNext.Enabled = false ; } else { linkLast.Enabled = true ; linkNext.Enabled = true ; } Label lblStatistic = e.Item.FindControl( "lblStatistic" ) as Label; lblStatistic.Text = string .Format( "共{0}页" ,PageCount); } else if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { LinkButton linkItem = e.Item.FindControl( "linkItem" ) as LinkButton; linkItem.Text = e.Item.DataItem.ToString(); if (( int )e.Item.DataItem == PageIndex) { linkItem.Enabled = false ; } else { linkItem.Enabled = true ; } } } protected void linkFirst_Command( object sender, CommandEventArgs e) { LinkButton linkb = sender as LinkButton; string type = e.CommandArgument.ToString(); switch (type) { case "f" : PageingMethod(1); break ; case "p" : PageingMethod( this .PageIndex - 1); break ; case "n" : PageingMethod( this .PageIndex + 1); break ; case "l" : PageingMethod( this .PageCount); break ; case "i" : PageingMethod(Convert.ToInt32(linkb.Text)); break ; } } protected void btnToPage_Click( object sender, EventArgs e) { if ( this .rptPageing.Items.Count<=0) { return ; } int pIndex=0; int .TryParse( this .hidToPage.Value, out pIndex); GoPage(pIndex); } } } |
下面是调用方法:
<%@ Page Language= "C#" AutoEventWireup= "true" CodeBehind= "WebForm2.aspx.cs" Inherits= "EB.Mall.Services.UI.Web.WebForm2" %> <%@ Register Src= "~/Pageing1.ascx" TagPrefix= "uc1" TagName= "Pageing1" %> <!DOCTYPE html> <html xmlns= "http://www.w3.org/1999/xhtml" > <head runat= "server" > <meta http-equiv= "Content-Type" content= "text/html; charset=utf-8" /> <title></title> </head> <body> <form id= "form1" runat= "server" > <div> <asp:Button ID= "Button1" runat= "server" Text= "查询" OnClick= "Button1_Click" /> <uc1:Pageing1 runat= "server" id= "Pageing1" OnOnPageing= "Pageing1_OnPageing" LoadShow= "true" /> </div> </form> </body> </html> |
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace EB.Mall.Services.UI.Web { public partial class WebForm2 : System.Web.UI.Page { protected void Page_Load( object sender, EventArgs e) { } protected void Pageing1_OnPageing( object obj, Pageing1.PageingEventArgs e, out int pageCount) { int pageIndex = e.PageIndex; //分解页面获取数据 pageCount = 20; } protected void Button1_Click( object sender, EventArgs e) { //不用获取数据,只写这一句就行 this .Pageing1.GoFirstPage(); } } } |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步