zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    redis 简单整理——redis shell[九]
    redis 简单整理——慢查询[八]
    redis 简单整理——redis 的键管理[七]
    redis 简单整理——redis 的集合基本结构和命令[五]
    redis 简单整理——redis 的列表基本结构和命令[四]
    redis 简单整理——redis 的有序集合基本结构和命令[六]
    redis 简单整理——redis 的哈希基本结构和命令[三]
    redis 简单整理——redis 的字符串基本结构和命令[二]
    redis 简单整理——redis 准备篇[一]
    Doris开发手记3:利用CoreDump文件快速定位Doris的查询问题
  • 原文地址:https://www.cnblogs.com/ranran/p/4140511.html
Copyright © 2011-2022 走看看