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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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 href=\"javascript:void(0)\">末页</a>" ;
     }
     else
     {
           pageBar += "<a href=\"" + Request.CurrentExecutionFilePath + "?Page=" + pds.PageCount + "\">末页</a>" ;
     }
     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;
}

前台.aspx代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
< form id = "form1" runat = "server" >
     < div >
         < asp:Repeater ID = "rptDocumentList" runat = "server" >
             < HeaderTemplate >
                 < ul >
             </ HeaderTemplate >
             < ItemTemplate >
                 < li >
                     <%# DataBinder.Eval(Container.DataItem, "Title")%></ li >
             </ ItemTemplate >
             < FooterTemplate >
                 </ ul >
             </ FooterTemplate >
         </ asp:Repeater >
     </ div >
     < div class = "pageBar" >
         < asp:Literal ID = "ltlPageBar" runat = "server" ></ asp:Literal >
     </ div >
</ form >

 

下载代码示例: PageDemo.RAR

转载于:https://www.cnblogs.com/ranran/p/4140511.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值