欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Repeater控件与PagedDataSource结合实现分页功能

程序员文章站 2024-02-25 23:01:33
本文讲解repeater控件与pageddatasource相结合实现其分页功能。pageddatasource 类封装那些允许数据源控件(如 datagrid、gridv...

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

pageddatasource 类的部分公共属性:

allowcustompaging // 获取或设置指示是否启用自定义分页的值。 allowpaging // 获取或设置指示是否启用分页的值。 count // 获取要从数据源使用的项数。 currentpageindex // 获取或设置当前页的索引。 datasource // 获取或设置数据源。 datasourcecount // 获取数据源中的项数。 firstindexinpage // 获取页中的第一个索引。 iscustompagingenabled // 获取一个值,该值指示是否启用自定义分页。 isfirstpage // 获取一个值,该值指示当前页是否是首页。 islastpage // 获取一个值,该值指示当前页是否是最后一页。 ispagingenabled // 获取一个值,该值指示是否启用分页。 isreadonly // 获取一个值,该值指示数据源是否是只读的。 issynchronized // 获取一个值,该值指示是否同步对数据源的访问(线程安全)。 pagecount // 获取显示数据源中的所有项所需要的总页数。 pagesize // 获取或设置要在单页上显示的项数。 virtualcount // 获取或设置在使用自定义分页时数据源中的实际项数。
下面是pageddatasource类实现repeater控件的分页显示例子,如图:

复制代码 代码如下:

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 += "首页";
}
else
{
pagebar += " + request.currentexecutionfilepath + "?page=1">首页";
}
if ((currentpageindex - 1) < 1)
{
pagebar += "上一页";
}
else
{
pagebar += " + request.currentexecutionfilepath + "?page=" + (currentpageindex - 1) + "">上一页";
}
if ((currentpageindex + 1) > pds.pagecount)
{
pagebar += "下一页";
}
else
{
pagebar += " + request.currentexecutionfilepath + "?page=" + (currentpageindex + 1) + "">下一页";
}
if (currentpageindex == pds.pagecount)
{
pagebar += "末页";
}
else
{
pagebar += " + request.currentexecutionfilepath + "?page=" + pds.pagecount + "">末页";
}
return pagebar;
}
// 创建测试表
datatable getdocumenttable()
{
datatable dt = new datatable();
dt.columns.add("documentid", typeof(int));
dt.columns.add("title", typeof(string));
for (int i = 1; i <= 30; i++)
{
datarow row = dt.newrow();
row["documentid"] = i;
row["title"] = "文档标题 " + i + "";
dt.rows.add(row);
}
return dt;
}