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

简介:

Spread支持开发人员自定义筛选数据的用户体验。基于行数据筛选,你可以允许用户分列进行筛选,从而仅显示符合了下拉列表中条件的行的数据,或者根据筛选结果更改行的外观。你可以使用默认的筛选方式,或者你可以从实际出发,自定义筛选器的每一个方面。

允许用户进行行筛选

默认情况下,表单禁止用户对表单的行进行筛选。你可以开启这一特性, 允许用户在所有列或者指定的列中进行行筛选。根据你要隐藏被筛除的列,还是更改列的外观,分别使用HideRowFilter类或StyleRowFilter类。 使用列AllowAutoFilter 的属性对给定的列进行筛选。

完成设置之后,用户可以选择下拉列表中的选项对列进行筛选。

根据一列中的值进行行筛选(隐藏筛除的行)时,请确保列首可见。使用HideRowFilter类选择行筛选的种类, 使用AllowAutoFilter属性,在制定的列中进行筛选。 下面的示例假设单元格中有一些数据,可以是指定的数据,也可以是绑定的数据源。

fpSpread1.ActiveSheet.ColumnHeaderVisible = true;

FarPoint.Win.Spread.HideRowFilter hideRowFilter = new FarPoint.Win.Spread.HideRowFilter(fpSpread1.ActiveSheet);

fpSpread1.ActiveSheet.Columns[1,3].AllowAutoFilter = true;

使用行筛选

一旦你在一列使用了行筛选,列首会显示一个指示器。 下表总结了行筛选指示器的不同外观:

行筛选指示器

描述

image

未进行行筛选的表头单元格的外观;这种情况通常出现在无筛选时,或行筛选未生效时。

image

可以进行行筛选,但是没有被筛除的行时的表头单元格的外观;这种情况通常发生在全部内容满足筛选条件的时候。

image

可以进行行筛选,并且进行了一部分筛选的表头单元格的外观;这种情况通常发生在根据行内容 进行了一部分行筛选时。

列首显示了一个似下拉箭头符号的行筛选指示器。点击这个指示器显示一个下拉菜单,包含了筛选器的各个选项。 从列表中选择一项,这样筛选就会生效,并且(在本列中)所有符合的行就会被筛选出来。 默认的下拉列表包括所有在本列中单元格中的不重复的文本。

image

下面的图表列出下拉列表中的条目。

筛选器列表项

描述

(全部)

不论内容,包含或允许在此列的所有行

[内容]

仅包含或允许此列中有特定的单元格内容的行

(空白)

仅包含或允许此列中空白(空单元格)的行

(非空)

仅包含或允许此列中非空的行(非空的单元格),换言之,包含内容的任何单元格。

     

在给定的表单中,多个列可能拥有筛选器。基于列中的单元格内容,不同的列可以有不同的筛选器。 筛选的结果类似于根据主键和从键进行数据排序。在最初的列中筛选器列表里面的这些选项就会筛选一些行, 剩下的过滤器列表中的选项是所有可能的行的一个子集。通过选择多个筛选器,结果就会仅仅是那些符合所有筛选标准的行。

设置筛除行的外观

你可以自定义筛除行的外观,以便于你查看哪些行被选中,哪些被排除。符合标准的行被称为“选中”,那些不符合筛选标准的行被称为“排除”。 筛选可以隐藏那些被排除的行,也可以改变选中行和排除行的外观 如果你想要改变外观,这样你就可以继续显示所有数据,与此同时,高亮标注那些符合某些标准的行。 然后,你必须定义选中行的样式与被排除行的样式。

你可以通过创建包含所有样式设置的NamedStyle对象来定义样式。 然后当行筛选应用于一列时,你可以通过引用对本筛选生效的NamedStyle对象 来使指定的样式设置生效。

在下列图表中,基于给定的代码,筛选项目中的Gibson选项会将有筛选项的行设置成一种外观样式,将其他的行设置成另外一种外观样式。

image

这里显示了如何使用代码启动行筛选。

// 定义应用于筛除行的样式.

FarPoint.Win.Spread.NamedStyle inStyle = new FarPoint.Win.Spread.NamedStyle();

FarPoint.Win.Spread.NamedStyle outStyle = new FarPoint.Win.Spread.NamedStyle();

inStyle.BackColor = Color.LightCyan;

inStyle.ForeColor = Color.DarkRed;

outStyle.BackColor = Color.LemonChiffon;

outStyle.ForeColor = Color.Green;

// 为第一列创建新的筛选设置(使用默认设置).

FarPoint.Win.Spread.FilterColumnDefinition fcdef = new FarPoint.Win.Spread.FilterColumnDefinition(0);

// 创建一个StyleRowFilter对象(样式筛选器), 并添加到上述筛选设置中.

FarPoint.Win.Spread.StyleRowFilter styleFilter = new FarPoint.Win.Spread.StyleRowFilter(fpSpread1.ActiveSheet, inStyle, outStyle);

styleFilter.AddColumn(fcdef);

// 为表单设置已创建的行筛选器对象。

fpSpread1.ActiveSheet.RowFilter = styleFilter;

// 以文本对数据区域进行筛选。

fpSpread1.ActiveSheet.DefaultStyle.CellType = new FarPoint.Win.Spread.CellType.TextCellType();

fpSpread1.ActiveSheet.SetText(0, 0, "Fender");

fpSpread1.ActiveSheet.SetText(1, 0, "Gibson");

fpSpread1.ActiveSheet.SetText(2, 0, "Fender");

fpSpread1.ActiveSheet.SetText(3, 0, "Ibanez");

fpSpread1.ActiveSheet.SetText(4, 0, "Gibson");

fpSpread1.ActiveSheet.SetText(5, 0, "Yamaha");

fpSpread1.ActiveSheet.SetText(0, 1, "AST-100 DMC");

fpSpread1.ActiveSheet.SetText(1, 1, "Les Paul Standard Double Cut Plus");

fpSpread1.ActiveSheet.SetText(2, 1, "ST58-70TX");

fpSpread1.ActiveSheet.SetText(3, 1, "AGS83B");

fpSpread1.ActiveSheet.SetText(4, 1, "Les Paul Supreme");

fpSpread1.ActiveSheet.SetColumnWidth(0, 90);

fpSpread1.ActiveSheet.SetColumnWidth(1, 210);

定义筛选项目列表的内容

你可以 根据列中指定单元格的内容筛选表单中的所有行。 要进行这样的行筛选,仅需完成以下简单的步骤:

定义筛选条件

定义筛选的结果行为(改变行的外观或者隐藏行)

定义任意自定义的筛选器

应用此筛选器

为每一列定义筛选标准,此步骤称为列筛选的定义。 这一用来根据列的内容来筛选的条件被分配给单个列。将这些单一的列的条件或筛选设置合并到一个集合中。

如果你要定义即将被筛选的行的外观,你可以通过定义一个选中样式和一个排除样式,或者直接隐藏被排除的行。

通过设置DefaultRowFilter类中的相关属性,你可以自定义在下拉列表中的下列选项的显示词语,

All - AllString Property

Blanks - BlanksString Property

NonBlanks - NonBlanksString Property

在一张表单中,对所有列或某些特定列进行行筛选(将筛选器设置集合应用于表单中的列)。

这里显示了如何使用代码进行行筛选

1. 进行列筛选的定义

2. 把这些定义组合成一个集合

3. 定义样式

4. 完成行筛选

// Declare the row filter and column definitions.

FarPoint.Win.Spread.FilterColumnDefinitionCollection fcdc = new FarPoint.Win.Spread.FilterColumnDefinitionCollection();

FarPoint.Win.Spread.FilterColumnDefinition fcd1 = new FarPoint.Win.Spread.FilterColumnDefinition(2);

FarPoint.Win.Spread.FilterColumnDefinition fcd2 = new FarPoint.Win.Spread.FilterColumnDefinition(3);

FarPoint.Win.Spread.FilterColumnDefinition fcd3 = new FarPoint.Win.Spread.FilterColumnDefinition(1);

// Add column filter definitions to a collection.

fcdc.Add(fcd1);

fcdc.Add(fcd2);

fcdc.Add(fcd3);

FarPoint.Win.Spread.NamedStyle inStyle = new FarPoint.Win.Spread.NamedStyle();

FarPoint.Win.Spread.NamedStyle outStyle = new FarPoint.Win.Spread.NamedStyle();

inStyle.BackColor = Color.Yellow;

outStyle.BackColor = Color.Aquamarine;

// Apply styles and column filter definitions to the row filter.

FarPoint.Win.Spread.StyleRowFilter rowFilter = new FarPoint.Win.Spread.StyleRowFilter(fpSpread1.ActiveSheet,inStyle,outStyle);

// Apply the column definition to the filter.

rowFilter.ColumnDefinitions = fcdc;

// Apply the row filter to the sheet.

fpSpread1.ActiveSheet.RowFilter = rowFilter;

 


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

相关文章
|
计算机视觉 Windows Python
windows下使用python + opencv读取含有中文路径的图片 和 把图片数据保存到含有中文的路径下
在Windows系统中,直接使用`cv2.imread()`和`cv2.imwrite()`处理含中文路径的图像文件时会遇到问题。读取时会返回空数据,保存时则无法正确保存至目标目录。为解决这些问题,可以使用`cv2.imdecode()`结合`np.fromfile()`来读取图像,并使用`cv2.imencode()`结合`tofile()`方法来保存图像至含中文的路径。这种方法有效避免了路径编码问题,确保图像处理流程顺畅进行。
1591 1
|
11月前
|
网络协议 数据建模 数据安全/隐私保护
网安快速入门之Windows命令
本文简要介绍了Windows命令行中常用的11个命令,帮助快速入门网络安全和系统管理。这些命令包括:`help`(获取命令帮助)、`copy`(复制文件)、`dir`(显示目录内容)、`cd`(更改当前目录)、`type`(显示文本文件内容)、`del`(删除文件)、`ipconfig`(查看网络配置)、`net`(用户和组管理)、`netstat`(显示网络连接)、`tasklist`(显示进程信息)和`sc`(服务控制)。每个命令都有其特定用途,掌握它们可以大大提高工作效率和系统维护能力。
|
安全 C# 开发者
Windows Forms 应用开发:一分钟浅谈
本文将带领您从零开始,逐步掌握使用 C# 进行 Windows Forms 开发的技巧,包括创建首个应用、处理常见问题及优化方法。首先介绍如何搭建环境并编写基础代码,接着深入探讨控件使用与布局管理,解决控件重叠和响应式布局难题。最后讲解事件处理与多线程技术,确保长时间任务不阻塞界面,并安全更新 UI 状态,助您开发流畅的应用程序。
539 63
|
数据库 数据安全/隐私保护 Windows
Windows远程桌面出现CredSSP加密数据修正问题解决方案
【10月更文挑战第30天】本文介绍了两种解决Windows系统凭据分配问题的方法。方案一是通过组策略编辑器(gpedit.msc)启用“加密数据库修正”并将其保护级别设为“易受攻击”。方案二是通过注册表编辑器(regedit)在指定路径下创建或修改名为“AllowEncryptionOracle”的DWORD值,并将其数值设为2。
9821 3
|
开发框架 .NET API
Windows Forms应用程序中集成一个ASP.NET API服务
Windows Forms应用程序中集成一个ASP.NET API服务
257 9
|
12月前
|
存储 缓存 安全
硬盘数据恢复:恢复硬盘数据的9个实用方法(Windows版)
无论是工作文档、家庭照片,还是其他珍贵的数字资产,数据丢失总是一件让人头疼的事情。然而,当硬盘发生问题时,不必过于慌张——只要正确应对,许多数据都可以被成功恢复。本文将从常见数据丢失原因到具体恢复方法,为您提供全面的硬盘数据恢复指导。
|
缓存 NoSQL Linux
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
323 1
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
|
Web App开发 存储 安全
微软警告数百万Windows用户:切勿冒险丢失所有数据
微软警告数百万Windows用户:切勿冒险丢失所有数据
微软警告数百万Windows用户:切勿冒险丢失所有数据
|
数据库 Windows
超详细步骤解析:从零开始,手把手教你使用 Visual Studio 打造你的第一个 Windows Forms 应用程序,菜鸟也能轻松上手的编程入门指南来了!
【8月更文挑战第31天】创建你的第一个Windows Forms (WinForms) 应用程序是一个激动人心的过程,尤其适合编程新手。本指南将带你逐步完成一个简单WinForms 应用的开发。首先,在Visual Studio 中创建一个“Windows Forms App (.NET)”项目,命名为“我的第一个WinForms 应用”。接着,在空白窗体中添加一个按钮和一个标签控件,并设置按钮文本为“点击我”。然后,为按钮添加点击事件处理程序`button1_Click`,实现点击按钮后更新标签文本为“你好,你刚刚点击了按钮!”。
1414 0
|
编解码 开发工具 C#
Windows电脑如何启动RTSP服务实现本地摄像头数据共享
本文介绍如何利用大牛直播SDK中的轻量级RTSP服务,在Windows平台上轻松采集摄像头数据并生成本地RTSP流。通过SDK提供的SmartPublisherDemo工具,用户能简便地选择摄像头、配置分辨率与帧率,并启动RTSP服务。此外,还支持音频采集、多端口服务以及动态水印等功能。生成的RTSP URL可用于其他终端拉流播放,无需额外部署服务器。该服务适配多种应用场景,如安防监控、电子教室等,并兼容Windows 7及以上版本。对于希望集成此功能的开发者,SDK提供了C++及C#接口,并支持多种编译模式。
878 0