Welcome 微信登录

首页 / 网页编程 / ASP.NET / ASP.NET 2.0数据教程之四十五:DataList和Repeater数据排序(二)

ASP.NET 2.0数据教程之四十五:DataList和Repeater数据排序(二)2010-08-11 翻译:cnblogs 有些伤感返回“”

第五步: 为使用默认分页的DataList添加排序的支持

在前面一章里我 们学习了如何使用DataList的默认分页。现在我们来扩展它,让它可以对分页的 数据进行排序。打开PagingSortingDataListRepeater文件夹里的 SortingWithDefaultPaging.aspx和Paging.aspx 页。在Paging.aspx 页里查看源 文件。将图8里选择的文本复制下来,然后粘贴到 SortingWithDefaultPaging.aspx 页里的<asp:Content> 标签内。

图 8: 复制粘贴代码

然后将Paging.aspx页后台代码里的属性和 方法也粘贴到SortingWithDefaultPaging.aspx页后台代码里。现在浏览 SortingWithDefaultPaging.aspx页,它现在应该有和Paging.aspx页一样的外观 和功能。

在ProductsBLL 里添加默认的分页和排序方法

前面一章 里我们在ProductsBLL类里创建了一个GetProductsAsPagedDataSource (pageIndex, pageSize)方法,它返回一个PagedDataSource对象。这个对象通过 BLL的GetProducts()方法获取所有的product,然而绑定到DataList的只是那些和 输入参数pageIndex 和 pageSize 相关的记录。

本章前面我们已经通过在 ObjectDataSource的 Selecting event handler里指定sort expression来添加了 排序功能。当ObjectDataSource返回可排序对象时这个方法运转的很好,比如 GetProducts()方法返回的ProductsDataTable。然而 GetProductsAsPagedDataSource方法返回的PagedDataSource对象并不支持对它内 部数据的排序,因此我们需要在将数据放入PagedDataSource前对GetProducts() 方法返回的记录进行排序。

在ProductsBLL类里建一个 GetProductsSortedAsPagedDataSource(sortExpression, pageIndex, pageSize) 方法。指定GetProducts() 方法返回的ProductsDataTable的default DataTableView的排序属性。

C#

[System.ComponentModel.DataObjectMethodAttribute
(System.ComponentModel.DataObjectMethodType.Select, false)]
public PagedDataSource GetProductsSortedAsPagedDataSource
(string sortExpression, int pageIndex, int pageSize)
{
// Get ALL of the products
Northwind.ProductsDataTable products = GetProducts();

// Sort the products
products.DefaultView.Sort = sortExpression;

// Limit the results through a PagedDataSource
PagedDataSource pagedData = new PagedDataSource();
pagedData.DataSource = products.DefaultView;
pagedData.AllowPaging = true;
pagedData.CurrentPageIndex = pageIndex;
pagedData.PageSize = pageSize;

return pagedData;
}