27-创建自定义排序用户界面

更新时间:2023-07-28 02:00:20 阅读: 评论: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="rver" AllowSorting="True" AutoGenerateColumns="Fal"
    DataKeyNames="ProductID" DataSourceID="ObjectDataSource1" EnableViewState="Fal">民治英语培训
nchr    <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" />
        2012新课标全国卷<asp:BoundField DataField="UnitPrice" DataFormatStringclassified post="{0:C}" HeaderText="Price"
            HtmlEncode="Fal" SortExpression="UnitPrice" />
gladder        <asp:CheckBoxField DataField="Discontinued" HeaderText="Discontinued" SortExpression="Discontinued" />
    </Columns>
</asp:GridView>

<asp:ObjectDataSource ID="ObjectDataSource1"bearer runat="rver" OldValuesParameterFormatString="original_{0}"
    SelectMethod="GetProducts"puer TypeName="ProductsBLL"></asp:ObjectDataSource>
 2021四六级考试时间
这时你在浏览器中预览你将看到类似图2的界面,数据按类别的字母顺序排序.
 
图2:可排序GridView按Category按序
步骤2:如何添加分界行
        完成创建创建一个普通的,能够排序的GridView后,就要在每一个类别的第一行之前添加分界行。怎么把这些分界行添加进GridView呢?一开始我们会想到遍历GridView的所有行,遇到排序列中的值不同就插入分界行。按照这种想法我们自然倒想利用GridView的DataRowBound事件来实现,DataRowBound事件我们已经在基于数据的自定义格式化一章中讲过,DataRowBound事件通常应用于格式化数据行。但是,DataRowBound事件不能解决这个问题,因为不能用这个事件动态地添加行到GridView,GridView的Rows集合是只读的.
        要添加行到GridView有以下3个方法:
1. 添加分界行到GridView绑定的数据源中
2. GridView绑定数据后,添加额外的TableRow对象到GridView的控件集
3. 创建一个自定义服务器控件,扩展GridView控件,重写它的方法以重新构造GridView的结构
        如果自定义排序用户界面广泛应用多个页面或多个网站,创建一个自定义服务器控件
是最好的方法.但采用这种方法要写太多的代码并且要深入理解GridView控件的的内部原理。因此,我们在这篇文章中不考虑使用这种方法。另外两种不同的方法-添加分界行到GridView绑定的数据源中和在GridView绑定数据后操作它的子控件,值得讨论.
添加分界行到绑定GridView的数据源中
    当GridView被绑定到数据源,GridView从数据源中的每一条记录创建一条GridViewRow.因此我们可以在数据绑定(binding)之前添加一条"分界记录",图3描述了这个过程.

图3:添加分界行到数据源原理图

本文发布于:2023-07-28 02:00:20,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/190827.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:类别   排序   添加   控件   创建   行到   分界   产品
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图