Repeater控件的分页实现

8/10/2015来源:ASP.NET技巧人气:1316

Repeater控件的分页实现

本文讲解Repeater控件与PagedDataSource相结合实现其分页功能。PagedDataSource 类封装那些允许数据源控件(如 DataGrid、GridView)执行分页操作的属性。如果控件开发人员需对自定义数据绑定控件提供分页支持,即可使用此类。

PagedDataSource 类的部分公共属性:

AllowCustomPaging // 获取或设置指示是否启用自定义分页的值。AllowPaging // 获取或设置指示是否启用分页的值。Count // 获取要从数据源使用的项数。CurrentPageIndex // 获取或设置当前页的索引。DataSource // 获取或设置数据源。DataSourceCount // 获取数据源中的项数。FirstIndexInPage // 获取页中的第一个索引。IsCustomPagingEnabled // 获取一个值,该值指示是否启用自定义分页。IsFirstPage // 获取一个值,该值指示当前页是否是首页。IsLastPage // 获取一个值,该值指示当前页是否是最后一页。IsPagingEnabled // 获取一个值,该值指示是否启用分页。IsReadOnly // 获取一个值,该值指示数据源是否是只读的。IsSynchronized // 获取一个值,该值指示是否同步对数据源的访问(线程安全)。PageCount // 获取显示数据源中的所有项所需要的总页数。PageSize // 获取或设置要在单页上显示的项数。VirtualCount // 获取或设置在使用自定义分页时数据源中的实际项数。

下面是PagedDataSource类实现Repeater控件的分页显示例子,如图:

本例使用vs.net 2008(C#)编写。后台.CS代码。来自admin10000.com

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081PRotected void Page_Load(object sender, EventArgs e){if (!Page.IsPostBack){int pageIndex = 1;try{pageIndex = Convert.ToInt32(Request.QueryString["Page"]);if (pageIndex <= 0) pageIndex = 1;}catch{pageIndex = 1;}DataTable dt = GetDocumentTable();PagedDataSource pds = new PagedDataSource(); pds.DataSource = dt.DefaultView; // 设置数据源pds.AllowPaging = true; // 设置指示是否启用分页的值pds.PageSize = 5; // 设置要在每页显示的数量pds.CurrentPageIndex = pageIndex - 1; // 设置当前页的索引。rptDocumentList.DataSource = pds;rptDocumentList.DataBind();ltlPageBar.Text = GetPageBar(pds);}}// 分页条private string GetPageBar(PagedDataSource pds){string pageBar = string.Empty;int currentPageIndex = pds.CurrentPageIndex + 1;if (currentPageIndex == 1){pageBar += "<a href=\"javascript:void(0)\">首页</a>";}else{pageBar += "<a href=\"" + Request.CurrentExecutionFilePath + "?Page=1\">首页</a>";}if ((currentPageIndex - 1) < 1){pageBar += "<a href=\"Javascript:void(0)\">上一页</a>";}else{pageBar += "<a href=\"" + Request.CurrentExecutionFilePath + "?Page=" + (currentPageIndex - 1) + "\">上一页</a>";}if ((currentPageIndex + 1) > pds.PageCount){pageBar += "<a href=\"javascript:void(0)\">下一页</a>";}else{pageBar += "<a href=\"" + Request.CurrentExecutionFilePath + "?Page=" + (currentPageIndex + 1) + "\">下一页</a>";}if (currentPageIndex == pds.PageCount){pageBar += "<a