返回“ASP.NET 2.0數據教程目錄”
第五步: 為使用默認分頁的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;
}