Repeater控件分页功能的实现 存在问题: Repeater是一种常用的动态数据绑定控件,它的布局最为灵活,但有一点很遗憾就是它没有直接实现分页的功能。 解决: 与PageDataSource相结合实现其分页功能。 using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Data.SqlClient; public partial class _Default : System.Web.UI.Page ... { DataTable table = new DataTable(); PagedDataSource PDS=new PagedDataSource(); protected void Page_Load(object sender, EventArgs e) ...{ if (!Page.IsPostBack) ...{ InitData(); } } //初始化数据,把数据添加到Session中,避免重复查询数据库。 void InitData() ...{ SqlConnection conn = new SqlConnection("Data Source=Localhost;Initial Catalog=Northwind;User ID=sa"); SqlCommand cmm = new SqlCommand("SELECT [CustomerID], [CompanyName] FROM [Customers]"); cmm.Connection = conn; SqlDataAdapter DA = new SqlDataAdapter(); DA.SelectCommand = cmm; DataSet DS = new DataSet(); DA.Fill(DS); table = DS.Tables[0]; if (Session["data"] != null) ...{ Session["data"] =table; } else ...{ Session.Add("data",table); } Pagging(0); } //实现分页功能 protected void Pagging(int index) ...{ PDS.DataSource =((DataTable)Session["data"]).DefaultView; PDS.CurrentPageIndex = index; PDS.AllowPaging = true; PDS.PageSize = 20; this.Repeater2.DataSource = PDS; this.Repeater2.DataBind(); DropDownList ddl = (DropDownList)this.Repeater2.Controls[this.Repeater2.Controls.Count - 1].FindControl("PageCount"); if (ddl != null) ...{ for (int i = 1; i < PDS.PageCount; i++) ...{ ddl.Items.Add(i.ToString()); } } } public void PageIndex(object sender, EventArgs e) ...{ DropDownList ddl = (DropDownList)this.Repeater2.Controls[this.Repeater2.Controls.Count - 1].FindControl("PageCount"); Pagging(int.Parse(ddl.SelectedItem.Text)-1); }} <% ... @ Page Language="C#" AutoEventWireup="true" CodeFile="RepeaterPagging.aspx.cs" Inherits="_Default" %> <! 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 > Repeater分页示例 </ title > </ head > < body > < form id ="form1" runat ="server" > < div > < asp:Repeater ID ="Repeater2" runat ="server" > < HeaderTemplate > < div style ="width:100%; height:20; color:Green; background-color:Gray;" > Repeater分页示例 </ div > </ HeaderTemplate > < ItemTemplate > < table > < tr > < td > 客户ID: < label id ="id" > <% ... # DataBinder.Eval(Container.DataItem,"CustomerID") %> </ label > </ td > < td > 公司名称: < label id ="Name" > <% ... # DataBinder.Eval(Container.DataItem,"CompanyName") %> </ label > </ td > </ tr > </ table > </ ItemTemplate > < FooterTemplate > 请选择页数 < asp:DropDownList ID ="PageCount" AutoPostBack ="true" OnTextChanged ="PageIndex" runat ="server" ></ asp:DropDownList > </ FooterTemplate > </ asp:Repeater > </ div > </ form > </ body > </ html >