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);

 



本文转自 powertoolsteam 51CTO博客,原文链接:http://blog.51cto.com/powertoolsteam/637320,如需转载请自行联系原作者

相关文章
|
7月前
|
开发工具 Windows
Windows平台RTMP推送|轻量级RTSP服务实现本地摄像头|屏幕|叠加数据预览
大家在做Windows平台RTMP推送或轻量级RTSP服务的时候,不管是采集屏幕还是采集摄像头,亦或屏幕摄像头的叠加模式,总会有这样的诉求,采集到的数据,希望能本地看看具体采集的数据或者图像实际效果,也就是本次介绍的“预览”功能。
192 0
|
消息中间件 安全 API
C#实现操作Windows窗口句柄:SendMessage/PostMessage发送系统消息、事件和数据【窗口句柄总结之二】
SendMessage/PostMessage API 可以实现发送系统消息,这些消息可以定义为常见的鼠标或键盘事件、数据的发送等各种系统操作......
3746 1
C#实现操作Windows窗口句柄:SendMessage/PostMessage发送系统消息、事件和数据【窗口句柄总结之二】
|
3月前
|
存储 Kubernetes 安全
虚拟机测试Windows Server 2016原地升级2019,应用和数据完美保留
Windows Server 2016可以无缝升级到2019版本,确保应用程序和数据在原地升级过程中完整保留。
109 0
|
3月前
|
关系型数据库 MySQL Java
windows下mybatis插入mysql数据中文乱码问题解决
windows下mybatis插入mysql数据中文乱码问题解决
|
4月前
|
存储 数据安全/隐私保护 Windows
4.5 Windows驱动开发:内核中实现进程数据转储
多数ARK反内核工具中都存在驱动级别的内存转存功能,该功能可以将应用层中运行进程的内存镜像转存到特定目录下,内存转存功能在应对加壳程序的分析尤为重要,当进程在内存中解码后,我们可以很容易的将内存镜像导出,从而更好的对样本进行分析,当然某些加密壳可能无效但绝大多数情况下是可以被转存的。
24 0
4.5 Windows驱动开发:内核中实现进程数据转储
|
5月前
|
监控 C# Windows
内网桌面监控软件中的远程控制功能实现(基于C#和Windows Forms)
近年来,随着远程办公的兴起,对内网桌面监控软件的需求逐渐增加。本文将探讨如何通过C#和Windows Forms实现内网桌面监控软件中的远程控制功能,并在结尾部分介绍监控到的数据如何自动提交到网站。
279 0
|
存储 监控 数据可视化
在Windows下使用JMeter集群+Influxdb存储+Grafana实时数据展示
在Windows下使用JMeter集群+Influxdb存储+Grafana实时数据展示
301 0
在Windows下使用JMeter集群+Influxdb存储+Grafana实时数据展示
|
JSON 关系型数据库 MySQL
windows python web flask获取请求参数数据
windows python web flask获取请求参数数据
windows python web flask获取请求参数数据
|
安全 Python Windows
windows python web flask 模板开发快速入门
windows python web flask 模板开发快速入门
windows python web flask 模板开发快速入门
|
JSON 关系型数据库 MySQL
windows python flask读取文件数据并返回表格
windows python flask读取文件数据并返回表格
windows python flask读取文件数据并返回表格