快速业务通道

ASP.NET 2.0数据教程之四十五:DataList和Repeater数据排序(一)

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21
>

<asp:ObjectDataSource ID="ProductsDataSource" runat="server"
OldValuesParameterFormatString="original_{0}" TypeName="ProductsBLL"
SelectMethod="GetProducts">
</asp:ObjectDataSource>

图 3 是现在浏览该页的样子 。

ASP.NET 2.0数据教程之四十五:DataList和Repeater数据排序(一)

图 3: 显示 Product的 Name, Supplier, Category

第三步: 指 导 ObjectDataSource 对数据进行排序

为了让Repeater里显示的数据排序 ,我们需要将数据排序的sort expression告诉ObjectDataSource。在 ObjectDataSource获取数据前,首先激发的是Selecting event,它给我们提供了 一个指定sort expression的机会。Selecting event handler 有一个 ObjectDataSourceSelectingEventArgs 类型的参数,它有一个名为Arguments的 DataSourceSelectArguments类型的属性.。DataSourceSelectArguments类被设计 用来将数据相关的请求从数据的消费者传给数据源控件,它有一个 SortExpression property。

创建一个Selecting event handler,用以下 代码将排序的信息从ASP.NET页传给ObjectDataSource:

C#

protected void ProductsDataSource_Selecting
(object sender, ObjectDataSourceSelectingEventArgs e)
{
e.Arguments.SortExpression = sortExpression;
}

sortExpression 需要赋值为排序字段的名字(例如 “ProductName”)。它没有排序方向相关的属性,因此如果需要以降 序来排序,将“DESC”附加在sortExpression 的值后面(比如 “ProductName DESC”)。

继续试一下硬编码将 sortExpression 赋为不同的值,并浏览页面 。如图4,当使用 “ProductName DESC”作为sortExpression时,product会根据name的 字母顺序反向排序。

ASP.NET 2.0数据教程之四十五:DataList和Repeater数据排序(一)

图 4: Product 根据Name 的字母顺序反向排序

第四步: 创建排 序界面并记下Sort Expression 和 Direction

开启GridView的排序支持会 将每个可排序的字段的header text转换为一个LinkButton,当被点击时,会进行 相对应的排序。这样的排序对GridView来说是很合理的,因为它的数据是以列的 形式整齐的展示。而对DataList和Repeater来说,需要不同的排序界面。一个常 见的数据列表(相对于数据网格)的排序界面是使用一个提供排序字段的下拉列 表。我们本章将完成这样的界面。

在SortableProducts Repeater上方添 加一个DropDownList,将ID设为SortBy。在属性窗口里点Items属性打开ListItem 集合编辑器。添加ListItems,让数据根据ProductName, CategoryName, SupplierName 字段排序。同时添加ListItem让product根据反向的name的顺序排 序。

ListItem的Text属性可以设为任何值(比如“Name”), 但是Value必须设为数据字段的名字(比如“ProductName”)。添加 字符串“DESC”到数据字段名字后面,来让结果以降序排序,比如 “ProductName DESC”。

ASP.NET 2.0数据教程之四十五:DataList和Repeater数据排序(一)

图 5:为每个可排序的字段添加 ListItem

最后在DropDownList 的右边添加一个Button。将ID设为RefreshRepeater,Text设为 “Refresh”。

完成这些后,DropDownList和Button的声明语 法看起来应该和下面差不多:

ASP.NET

<asp:DropDownList ID="SortBy" runat="server">
<asp:ListItem Value="ProductName">Name</asp:ListItem>
<asp:ListItem Value="ProductName DESC">Name (Reverse Order)
</asp:ListItem>
<asp:ListItem Value="CategoryName">Category</asp:ListItem>
<asp:ListItem Value="SupplierName">Supplier</asp:ListItem>
<

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号