返回“ASP.NET 2.0数据教程目录”
显示大量已经按类别(不是很多)排序的数据但没有类别分界线,用户很难找到 所需要的类别。例如,数据库中只有9个类别(8个不同的类别和1个null),共81 种产品.现在用一个GridView列出所有产品,假设有用户对类别Seafood的产品感 兴趣,她一定会按类别排序,把Seafood产品排列在一起.排序后,用户便寻找 Seafood产品开始和结束的地方。虽然是按英文字母排列类别不难找到Seafood,但 仍要花些时间在GridView寻找。为了进一步的区分类别,许多网站使用类别分界 线这种排序用户界面来区别不同的类别。例如像图1中的分界线可以使用户很快地 找到需要的类别。
图1:不同组明显的区分开来
在这篇文章中我们将讲解如何创建 这种排序用户界面.
步骤1:创建一个普通的,能够排序的GridView
在我 们学习如何创建增强型排序用户界面之前,先创建一个普通的列出所有产品 GridView并且能够排序.现在打PagingAndSorting文件夹下的 CustomSortingUI.aspx,添加一个GridView,设置ID="ProductList",以 一个ObjectDataSource为数据源,ObjectDataSource的数据从ProductsBLL类的 GetProducts()取得。
接下来设置GridView的列,包括ProductName, CategoryName, SupplierName, UnitPrice绑定列和Discontinued复选框列,再设 置GridView允许排序。设置完这些以后你应该可以在代码编辑看到下面这些代 码:
<asp:GridView ID="ProductList" runat="server" AllowSorting="True" AutoGenerateColumns="False"
DataKeyNames="ProductID" DataSourceID="ObjectDataSource1" EnableViewState="False">
<Columns>
<asp:BoundField DataField="ProductName" HeaderText="Product" SortExpression="ProductName" />
<asp:BoundField DataField="CategoryName" HeaderText="Category" ReadOnly="True" SortExpression="CategoryName" />
<asp:BoundField DataField="SupplierName" HeaderText="Supplier" ReadOnly="True" SortExpression="SupplierName" />
<asp:BoundField DataField="UnitPrice" DataFormatString="{0:C}" HeaderText="Price"
HtmlEncode="False" SortExpression="UnitPrice" />
<asp:CheckBoxField DataField="Discontinued" HeaderText="Discontinued" SortExpression="Discontinued" />
</Columns>
</asp:GridView>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" OldValuesParameterFormatString="original_{0}"
SelectMethod="GetProducts" TypeName="ProductsBLL"></asp:ObjectDataSource>
这时你在浏览器中预览你将看到类似图2的界面,数据按类别的字母顺序 排序.
图2:可排序GridView按Category按序