如何在ASP.NET中使用Repeater控件进行分页?

  
<asp:Image ID="imgteacher" runat="server" Height="150" Width="248" ImageUrl=''/>
<asp:Label ID="lbldatebegin" runat="server" Text=''>
<asp:Label ID="lbldateend" runat="server" Text=''>

在我的项目中, Repeater Control工作正常。 现在我需要分页来替换这些数据。 但我没有任何关于此的信息。 可能有人就这个问题给我建议。

如下图所示。

在此处输入图像描述

在Repeater控件中没有内置分页,但基于本文,您可以通过为页面创建另一个Repeater控件并使用PagedDataSource作为源来实现Repeater控件中的分页。

首先,将其添加到您的标记中:

 
<%# Container.DataItem %>

接下来,在您的代码中添加以下属性:

 //This property will contain the current page number public int PageNumber { get { if (ViewState["PageNumber"] != null) { return Convert.ToInt32(ViewState["PageNumber"]); } else { return 0; } } set { ViewState["PageNumber"] = value; } } 

最后添加以下方法:

 protected void Page_Load(object sender, EventArgs e) { BindRepeater(); } private void BindRepeater() { //Do your database connection stuff and get your data SqlConnection cn = new SqlConnection(yourConnectionString); SqlCommand cmd = new SqlCommand(); cmd.Connection = cn; SqlDataAdapter ad = new SqlDataAdapter(cmd); cmd.CommandText = "Select * from YourTable"; //save the result in data table DataTable dt = new DataTable(); ad.SelectCommand = cmd; ad.Fill(dt); //Create the PagedDataSource that will be used in paging PagedDataSource pgitems = new PagedDataSource(); pgitems.DataSource = dt.DefaultView; pgitems.AllowPaging = true; //Control page size from here pgitems.PageSize = 4; pgitems.CurrentPageIndex = PageNumber; if (pgitems.PageCount > 1) { rptPaging.Visible = true; ArrayList pages = new ArrayList(); for (int i = 0; i <= pgitems.PageCount - 1; i++) { pages.Add((i + 1).ToString()); } rptPaging.DataSource = pages; rptPaging.DataBind(); } else { rptPaging.Visible = false; } //Finally, set the datasource of the repeater RepCourse.DataSource = pgitems; RepCourse.DataBind(); } //This method will fire when clicking on the page no link from the pager repeater protected void rptPaging_ItemCommand(object source, System.Web.UI.WebControls.RepeaterCommandEventArgs e) { PageNumber = Convert.ToInt32(e.CommandArgument) - 1; BindRepeater(); } 

请试一试,如果您遇到任何问题,请告知我。

编辑:替代解决方案

可以找到另一个出色的解决方案。 此处 ,此解决方案包括页面的导航按钮 。 您需要从该链接下载文件以查看function分页,并使用Repeater控件替换DataList控件。

希望这可以帮助。