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;
}