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

时间: 2024-11-06 09:53:08

Repeater控件的分页实现的相关文章

repeater控件实现分页

repeater控件实现排序的方法,今天我再向大家介绍repeater控件如何实现分页的效果. 分页分为真分页和假分页. 真分页:控件上一页需要显示多少数据,就从数据库取出并绑定多少数据,每次换页时都需要访问数据库. 假分页:从数据库一次性取出所有数据绑定到控件上,再将所有数据根据一页显示多少条而分页. 从以上二者的概念上我们可以看出,区别在于分页时从数据库读取信息的方式,真分页的效率无疑是最高的.假分页在首次页面加载的时候会比较慢(如果数据量较多). 二者其实各有各的优缺点,可根据需要来自行选

Repeater控件-实现分页(升级版)

原来已经写了一个repeater控件的分页,今天有些了一个优化的程序. 1.解决了当数据条数,小于要显示的数据条数时,出现上一页按钮和还能继续递减的问题. 2.同时,还添加了在显示数据的表中进行删除和修改数据. 3.还解决了页面间的传值问题,(当点击Edit按钮时,页面跳转到另一个界面,也就是修改信息界面,然后进行修改,修改完成后保存并返回主界面.) 以上就是,新增的内容. 下面是代码: 总计使用了两个页面,一个是显示数据的页面(Default.aspx)另一个是修改信息的页面(Edit.asp

ASP.NET Repeater控件实现简单分页

早上,有看MSDN,看到了 PagedDataSource 类 http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.pageddatasource(v=vs.110).aspx 想起以前Insus.NET只对Gridview和DataList控件进行自定义分页.<GridView和DataList分页组件与用户控件>http://www.cnblogs.com/insus/archive/2009/03/19/14

repeater控件自定义Url分页带参数

repeater控件的效果图如下: 该页面实现的功能如下: 1.上下分页,(也可以带首页和末页,我只是禁掉了没用) 2.根据用户输入的指定分页索引进行跳转 3.根据筛选数据的参数进行URL分页的参数传递 4.数据的导出功能 前台代码: <!--表格具体内容--> <div class="table-box"> <table> <thead> <tr> <th>编号</th> <th>姓名&l

(转) .NET实现Repeater控件+AspNetPager控件分页

SqlConnection (.NET C#) 连接及分页 .net的访问数据机制决定了访问大量数据时会致使客户端机器消耗大量资源,因此有必要对数据进行分页显示,开发工具vs.net+sqlserver,语言c# 1.加入引用 将AspNetPager控件引入到项目中,即在aspx页面里添加引用,把AspNetPager的dll文件加到Bin文件夹目录下using System.Data.SqlClient;using Wuqi.Webdiyer; 2.前台显示页面aspx <%@ Page L

使用Sql分页方法给Repeater控件分页的方法

页面代码 <div class="bookList"> <asp:Repeater ID="rpBooks" runat="server"> <HeaderTemplate> <ul class="title"> <li class="bName">书名</li> <li class="bAuthor">

Repeater控件使用(含删除,分页功能)

Repeater控件使用(含删除,分页功能) 摘自:http://www.cnblogs.com/alanliu/archive/2008/02/25/914779.html 前臺代碼 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Repeater.aspx.cs" Inherits="Repeater" %> <!DOCTYPE html P

Repeater控件 ---表格展示数据

简介: Repeater控件是Web 服务器控件中的一个容器控件,它使您可以从页的任何可用数据中创建出自定义列表. Repeater 控件不具备内置的呈现功能,这表示用户必须通过创建模板为 Repeater 控件提供布局.当该页运行时, Repeater 控件依次通过数据源中的记录为每个记录呈现一个项. Repeater控件不具备内置的呈现功能,所以我们得用一些模板来实现他的数据呈现 下表描述了 Repeater 控件支持的模板.  模板属性                           

Repeater控件-2

本文转自:http://www.cnblogs.com/foolin/archive/2011/08/31/2161342.html 文章最后更新于2011年9月2日,增加Demo代码. 一般开发绑定数据的时候,Repeater控件是非常好用的控件,但是很多.net开发人员苦恼于无法分页,于是开发一个基于Repeater的分页控件,现在拿出来和大家一起分享分享.写得不好大家可以尽管拍砖,源码在本文后面.其实这个分页控件非常简单,分页控件只是根据记录数和当前页数等设置而输出一个分页导航条而已,并没