Spread for Windows Forms快速入门(13)---数据排序

开发人员可以对Spread表单中的行和列进行自动排序操作,如根据指定的列,以升序方式自动排序表单中的数据。同时,也可以显示排序指示器。这些操作不会影响数据模型 仅仅涉及数据如何显示。

允许用户自动地对行进行排序

你可以设置表单以允许用户在列首被点击的情况下使用自动排序这一功能。当列首第一次被点击(被选中)时,未排序的图标就会显示。第二次点击时就会显示排序图标并且会将列进行排序。如果用户在相同的列上 连续点击,那么排序的方向就会被反转。这并不影响数据模型,只会影响数据如何显示。下面的图表显示了未排序图标。

image

使用Column对象的 AllowAutoSort 属性或者SheetView对象的SetColumnAllowAutoSort 方法允许用户点击列首进行自动排序操作。设置列的SortIndicator属性以显示排序指示器。

设置SetColumShowSortIndicator方法或者ShowSortIndicator 属性以显示或隐藏排序指示器。排序指示器在列的头部的显示方式如下图,它显示了升序和降序的排序指示器。

升序指示器

降序指示器

image image
   

当用户排序数据时,排序之前会发生AutoSortingColumn事件,排序之后会发生AutoSortedColumn事件。

下面的示例显示了对进行前面的30列进行自动排序:

fpSpread1.Sheets[0].Columns[0,29].AllowAutoSort = true;

or

fpSpread1.Sheets[0].SetColumnAllowAutoSort(0,30,true);

使用自动排序

在表单中,根据指定的键,使用AutoSortColumn方法对显示区域进行排序操作。 并使用SetColumShowSortIndicator来设置是否显示排序指示器。 AutoSortColumn方法进行的操作与点击指定列的列首操作相同(如果此列的 AllowAutoSort属性已被设为true)。如果同一个列索引成功调用此方法,那么排序的方向就会发生倒置。如果此方法被不同的列索引调用,那么这之前的 已排序的列指示器就会被改回SortIndicator.None(如果有),并且表单以指定的列为键进行排序。 这些操作不会影响数据模型,只会影响数据显示方式。这种方法的几种不同的重载提供了不同的排序方式。

下面的这个示例自动的将第一列进行排序。

fpSpread1.ActiveSheet.SetColumnAllowAutoSort(0, true);

fpSpread1.ActiveSheet.SetColumnShowSortIndicator(0, false);

fpSpread1.ActiveSheet.AutoSortColumn(0);

对若干行,列,或者一个区域进行排序

根据跟定列的值对整个表单的所有行进行排序是最常见的一种情况。同时Spread也允许你既可以对行或者列进行排序,又可以指定列或行作为关键字进行排列。这种排列对整个表单都有效。

通过使用SortColumns (或 SortRows)方法,以某个或某几个行(或列)作为键,对表单中一定区域内的列或行进行排序。 这些操作不会影响数据模型,仅作用于数据的显示。

你可以只对某一区域内的单元格的数据进行排序,这是相当有用的。举例来讲,当你想要进行根据数量的顺序对许多行进行排序,但不包含最后一行统计数据,上面的 操作就相当有效。这种情况下,你可以在一个单元格区域内对数据进行排序,但是除掉最后一行,最后一行不参与排序。

在某一区域内对数据进行排序的方式有两种。对于绑定数据而言,使用SortRows方法和SortColumns方法, 同时在重载函数中传入指定的参数,这样你就可以指定哪个行区域或哪个列区域进行排序。对于非绑定数据而言,仅仅需要使用 SortRange方法。此方法不适用于绑定数据,因为操作产生的数据移动(并不是对整行整列生效)会影响源数据。

这段代码根据第二列的数据对所有行进行筛选。(因为列索引是以零为基础的,第二列的索引为1),排序指示器已经启动。

fpoint1.ActiveSheet.SortRows(1,true,true);

下面的示例显示了使用预先定义过排序信息列表对第12行到第230行进行排序。

FarPoint.Win.Spread.SortInfo[] sorter = new FarPoint.Win.Spread.SortInfo[1];

sorter[0] = new FarPoint.Win.Spread.SortInfo(0, false, System.Collections.Comparer.Default);

fpoint1.ActiveSheet.SortColumns(12,230,sorter);

 

附:Spread for Windows Forms快速入门系列文章

Spread for Windows Forms快速入门(1)---开始使用Spread

Spread for Windows Forms快速入门(2)---设置Spread表单

Spread for Windows Forms快速入门(3)---行列操作

Spread for Windows Forms快速入门(4)---常用的单元格类型(上)

Spread for Windows Forms快速入门(5)---常用的单元格类型(下)

Spread for Windows Forms快速入门(6)---定义单元格的外观

Spread for Windows Forms快速入门(7)---单元格的交互操作

Spread for Windows Forms快速入门(8)---单元格中用户动作出发的事件

Spread for Windows Forms快速入门(9)---使用公式

Spread for Windows Forms快速入门(10)---绑定到数据库

Spread for Windows Forms快速入门(11)---数据筛选

Spread for Windows Forms快速入门(12)---数据分组(Outlook风格)

posted @ 2011-08-12 10:39 葡萄城控件技术团队 阅读(...) 评论(...) 编辑 收藏