现在的位置: 首页 > 综合 > 正文

DataList和Repeater数据排序

2013年08月02日 ⁄ 综合 ⁄ 共 2251字 ⁄ 字号 评论关闭

(以后比较长的部分我都会分几次贴出来)

导言

DataList和Repeater数据分页里我们学习了如何在DataList里添加分页功能。我们在ProductsBLL类里创建了一个名为GetProductsAsPagedDataSource的方法,它返回一个PagedDataSource对象。当绑定到DataListRepeater时,他们将只显示请求页的数据。这个技术和GridViewDetailsViewFormView的内置分页功能原理差不多。

除了分页外,GridView还提供了内置的排序功能,而DataListRepeater都没有。然而排序功能可以通过一点点代码就实现。本章我们将学习如何在DataListRepeater里实现排序功能,我们还将创建一个同时支持分页和排序的DataListRepeater

回顾一下排序

如我们在分页和排序报表数据里看到的,GridView提供了排序的支持。每个GridView的字段可以有一个关联的SortExpression,它指明了对数据进行排序依据的字段。当GridViewAllowSorting属性设为true时,每个包含SortExpression 属性的GridView的字段的header都表现为一个LinkButton。当点一个header时,页面postback,数据会根据被点字段的SortExpression进行排序。另外,SortDirection属性指明了数据是升序或降序。

当将GridView绑定到数据源控件时,它会将SortExpressionSortDirection传给数据源控件。数据源控件获取数据并根据SortExpressionSortDirection进行排序。然后将数据返回给GridView

DataListRepeater里实现这个功能,我们需要:

  • 创建一个排序界面

  • 将排序的字段和方向(升序或降序)记下

  • 指导ObjectDataSource根据特定字段排序

我们将在第三和四步来处理上面三个步骤。然后我们将看看如何让DataListRepeater同时支持这两个功能(分页和排序)。

第二步: Repeater里显示 Products

在实现排序功能前,首先创建一个列出所有productRepeater。打开PagingSortingDataListRepeater文件夹里的Sorting.aspx页。添加一个Repeater,ID设为SortableProducts。从智能标签里创建一个名为ProductsDataSourceObjectDataSource。用ProductsBLL类的GetProducts()方法配置它。在INSERT, UPDATE, DELETE标签的下拉列表里选择“(None)”


1: 创建 ObjectDataSource

2: UPDATE, INSERT, DELETE 标签的下拉列表里选择 “(None)”

在绑定到数据源后,Visual Studio没有自动为Repeater创建ItemTemplate,这点和DataList不一样。而且由于Repeater控件的智能标签里没有象DataList里那样的“Edit Templates”选项,因此我们需要直接添加声明代码。我们使用和前一章一样的ItemTemplate,它显示product name, supplier, category

现在你的RepeaterObjectDataSource的声明标记看起来应该和下面差不多:

ASP.NET

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<asp:Repeater ID="SortableProducts" DataSourceID="ProductsDataSource"

    EnableViewState="False" runat="server">

    <ItemTemplate>

        <h4><asp:Label ID="ProductNameLabel" runat="server"

            Text='<%# Eval("ProductName") %>'></asp:Label></h4>

        Category:

        <asp:Label ID="CategoryNameLabel" runat="server"

            Text=

抱歉!评论已关闭.