求助VB排序题

当显示很长的排序数据列表,而其中排序列只有为数为多的不同值时,用户可能很难识别不同值的边界出现的确切位置。例如,数据库中有 81 种产品,但是只有 9 种不同的分类选项( 8 种互不相同的分类和 NULL 选项)。设想有个用户对海鲜 (Seafood) 一类的产品感兴趣,想要查看这类产品。在通过一个 GridView 列出所有产品的页面上,用户可能认为最好的办法是将结果按分类进行排序,这会将所有海鲜产品分到一组。按分类排序之后,用户便在列表中搜寻,查找以海鲜分组的产品开始和结束的位置。由于结果按分类名称的字母顺序排序,因而查找海鲜产品并不困难,但仍需要在这个 grid 中仔细浏览各列表项。

为了突出显示各个排序组之间的边界,许多网站采用在不同组之间添加分隔行的用户界面。如图 1 所示,分隔行使用户能更快地找到特定的组,识别出该组的边界,以及确定数据中存在哪些不同的组。

图1 :可以清楚地识别每个类别组

本教程中,我们将了解怎样创建这样的排序用户界面。

步骤1 :创建一个标准的、可排序的 GridView

在我们学习如何扩展 GridView 以提供增强的排序界面之前,先创建一个可以列出产品的标准的、可排序的 GridView 。首先打开 PagingAndSorting 文件夹下的 pareTo( _

在该代码中,首先编码引用 GridView 控件层次结构根部的 Table 对象并创建一个名为 lastValue 的字符串变量。我们用 lastValue 来比较当前行和上一行的排序列的值。下一步,枚举 GridView 的 Rows 集合,对于每一行,排序列的值都存储在 currentValue 变量中。

注意:我用单元格的 Text 属性来要确定特定行的排序列的值。这适合于 BoundField ,但不适合于 TemplateField 、CheckBoxField 等。我们将在后面了解如何解决其它 GridView 字段的问题。

用于格式化排序组标题行的 CSS 类,SortHeaderRowStyle ,需要在 Styles.css 文件中指定。您可以随意使用任何喜欢的样式设置;我使用的是以下设置:

有了当前的代码,当按任何 BoundField 排序时,排序界面会添加排序组标题(参见图 5 ,图中显示按供应商排序时的截屏)。但是,当按任何其它字段类型(如 CheckBoxField 或 TemplateField )排序时,则没有发现排序组标题(参见图 6 )。

图5 :按 BoundFields 排序时排序界面包含排序组标题

图7 :当对 CheckBoxField 排序时现在可以出现排序组标题

注意:如果数据库中有的产品的 CategoryID 、SupplierID 或 UnitPrice 字段的值为 NULL ,默认情况下,在 GridView 中这些值将显示为空字符串,意味着这些具有 NULL 值的产品的分隔行中的文本将显示为 “Category:” 。(即 “Category:” 之后没有名称,不是像

GridView 没有包括许多用来自定义排序界面的内置选项。但是,通过少量低层代码,可以调整 GridView 的控件层次结构以创建更高程度的自定义界面。本教程中,我们了解了怎样为可排序 GridView 添加排序组分隔行,从而使用户可以更容易地识别不同的组以及这些组的边界。有关自定义排序界面的其它示例,可以查看 的博客中的 一文。

}

我要回帖

更多关于 vb选择排序法的基本思路 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信