本文讲解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
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 | PRotected 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 |