其实Repeater分页是一个很简单的过程,只要你仔细看里面的逻辑,相信你也可以做到!
准备页面素材:
1、前台页面需要放置一个 Repeater ,用来显示您索要显示的数据。
2、一个隐藏域 lable 用来控制页数。
后台:
1、数据源,我们使用Datatable,用来绑定Repeater。
2、分页控制数据源 PagedDataSource,用来分页填充。
原理:
设置PagedDataSource显示条数,然后将PagedDataSource的当前页的数据填充给Repeater,这样就实现了分页效果。
前台代码:
<%@ Page Language="C#" AutoEventWireup="true" Title="Repeater分页" CodeFile="myRandom.aspx.cs" Inherits="myRandom" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div style="900px; background-color:#ccc; height:30px;"> <!--上一页按钮 --> <asp:imageButton ImageUrl="~/testimage/014.png" ImageAlign="AbsMiddle" ID="btnP" runat="server" onclick="btnP_Click" /> <!-- Repeater --> <asp:repeater ID="rptNavigate" runat="server"> <ItemTemplate> <a style="200px; height:30px; vertical-align:middle; "><%#Eval("b_name") %></a> </ItemTemplate> </asp:repeater> <!-- 下一页按钮 --> <asp:imageButton ImageUrl="~/testimage/013.png" ID="btnN" runat="server" onclick="btnN_Click" style="text-align: right" ImageAlign="AbsMiddle" /> <!-- 隐藏域ID, 用来控制当前 PagedDataSource 的页数 --> <asp:Label Visible="false" ID="lblCount" runat="server" Text="1"></asp:Label> </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; using System.Drawing; using System.Data; public partial class myRandom : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Bind();//在窗体加载的时候调用 } public void Bind() { string strSql = "select * from xwe_bigtype"; //指定数据源 DataTable dt = SaleInfoManager.GetBySQL(strSql); //实例化pagerDatatable PagedDataSource pds = new PagedDataSource(); //给pds绑定数据 pds.DataSource = dt.DefaultView; //设定可分页 pds.AllowPaging = true; //可以分几条 pds.PageSize = 6; //设定默认页 pds.CurrentPageIndex = Convert.ToInt32(lblCount.Text.ToString ())-1; rptNavigate.DataSource=pds; //如果大于当前页 if(pds.CurrentPageIndex>=1) { btnP.Enabled=true; btnN.Enabled=true; } //如果是最后一页,让下一页按钮不起作用 if(pds.CurrentPageIndex==pds.PageCount-1) { btnN.Enabled=false; btnP.Enabled=true; } //如果是第一页 if(pds.CurrentPageIndex==0) { btnP.Enabled=false; btnN.Enabled=true; } rptNavigate.DataBind(); } //下一页事件 protected void btnN_Click(object sender, EventArgs e) { lblCount.Text = (Convert.ToInt32(lblCount.Text.ToString()) + 1).ToString (); this.Bind(); } //上一页事件 protected void btnP_Click(object sender, EventArgs e) { lblCount.Text = (Convert.ToInt32(lblCount.Text.ToString()) - 1).ToString (); this.Bind(); } }
页面效果:
第一页:
第二页: