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;

使用行筛选

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


行筛选指示器


描述


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


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


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

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

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


筛选器列表项


描述


(全部)


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


[内容]


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


(空白)


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


(非空)


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

     

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

设置筛除行的外观

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

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

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

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


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

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;

 

附: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 7新功能使用指南

Spread Studio 10.0v1 发布

SpreadJS 10.0v1 发布

 

时间: 2024-10-31 15:42:58

Spread for Windows Forms快速入门(11)---数据筛选的相关文章

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

你可以设置的显示将行分组变成 OUTLOOK样式.对于大量的数据来说,这样会以用户需要的顺序显示数据.用户可以选择要进行的排序(以列为依据),然后控件会以此为依据将行组织起来,分级地显示数据.既可以通过双击列首的方式,也可以通过点击和拖拽此列进入页面头部分组栏的方式 选中要进行分组的列. 允许用户使用行分组 默认情况下,不允许用户在表单中进行行分组. 你可以开启这项特性,以便对整个表单的行进行分组.除了允许进行分组之外,你还需要允许移动列,因为用户通过使用点击和向分组栏中拖拽列首的方式进行分组,

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

开发人员可以对Spread表单中的行和列进行自动排序操作,如根据指定的列,以升序方式自动排序表单中的数据.同时,也可以显示排序指示器.这些操作不会影响数据模型 仅仅涉及数据如何显示. 允许用户自动地对行进行排序 你可以设置表单以允许用户在列首被点击的情况下使用自动排序这一功能.当列首第一次被点击(被选中)时,未排序的图标就会显示.第二次点击时就会显示排序图标并且会将列进行排序.如果用户在相同的列上 连续点击,那么排序的方向就会被反转.这并不影响数据模型,只会影响数据如何显示.下面的图表显示了未排

Spread for Windows Forms快速入门(14)---文件操作

你可以将数据从Spread中存到几种不同类型的文件中或者可以在Spread中打开几种不同类型的数据文件.通过使用相应的代码,你可以将整个控件,某个特定的表单,或者某个特定单元格区域中的数据保存为几种不同的文件类型或者流.类似的,你可以允许用户对某几种文件类型进行文件操作. 保存到Excel文件 你可以使用ExcelSaveFlags枚举类型的UseOOXMLFormat选项,将数据保存到Excel格式文件(BIFF8 格式)或者Excel 2007 XML 格式(xlsx).默认的,当你保存为E

Spread for Windows Forms快速入门(15)---使用 Spread 设计器

通过 Spread 设计器用户可以快速地对 Spread 控件进行设计.无论用户是正在做一个关于 Spread 控件特性的原型研究,还是对于一个已经存在的 Spread 控件在某些方面进行进一步的定制,Spread 设计器专有的图形界面可节省大量的时间和精力.Spread 设计器允许用户添加数据,同时设置控件属性,而且还包括那些在 Visual Studio 中无法设置的属性.用户可以同时设置运行时和设计时属性,大多数情况下用户可以在应用设置之前预览效果,设置完成后,就可以将所有的设置应用到 S

Spread for Windows Forms快速入门(16)---用Spread设计器创建和编辑图表

Spread支持85种丰富多彩的图表效果.可以在Spread设计器中基于工作表的数据直接生成图表,操作简单.同时,软件人员还可以在Visual Studio设计环境中定制图表的所有元素,包括标题.序列.轴.样式.图例等.这一篇介绍如何用Spread设计器创建和编辑图表. 准备图表的数据 首先要启动Spread设计器.你可以在 Visual Studio .NET 中鼠标右键点击 Spread 控件,在弹出菜单中选择 Spread 设计器:也可以在安装菜单中启动独立运行的Spread 设计器. 在

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

下面的教程将带你创建一个工程, 并将Spread控件绑定到一个数据库. 在这个教程中,主要的步骤为: 1. 将Spread添加到一个数据绑定工程中 2. 设置数据库连接 3. 指定要使用的数据 4. 创建数据集 5. 把Spread控件绑定到数据库 6. 通过改变单元格类型改善显示效果   将Spread添加到一个数据绑定工程中 打开一个新的Visual Studio.NET工程.将工程命名为databind.将工程中的窗体文件命名为binding.cs(或.vb). 将FpSpread控件添加

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

单元格类型定义了在单元格中呈现的信息的类型,以及这种信息如何显示,用户如何与其进行交互.单元格类型可以被赋给单个的单元格,整行或者整列. 用户可以使用两种不同的单元格类型对表单中的单元格进行设置: 一种是可以简单地关联于单元格的文本格式,另一种就是显示控件或者图形化信息.我们在本篇介绍常用的文本单元格类型,下一篇介绍常用的图形单元格类型. 通用单元格GeneralCellType 对于表单中的单元格而言,通用单元格是默认的单元格类型. 除非你指定了其他的单元格类型,控件通常会默认将通用单元格类型

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

让我们从设置Spread的大小和表单的外观开始学习如何定制Spread,这些操作通常放在Form的构造函数中进行,在InitializeComponent()之后调用.   自定义控件的大小 你可以设置Spread控件的规格,这决定了表单中可见的区域的大小.下面的图片中展示了你可以设置的规格,通过设置每一个规格中像素的数量进行设置.   计算Spread控件的高度时,假设滚动条是关闭状态,没有标题,计算所有行的高度以及每一个边界按1个像素计算,所以,如果现在有10行,每行20像素高度,总的高度为

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

在上一篇,我们介绍了常用了文本类型单元格.除了文本型单元格外,Spread还支持如下13种图形单元格类型:组合框单元格.按钮单元格.复选框单元格.超链接单元格.进度条单元格.条码单元格.颜色选择器单元格.图片单元.列表框单元格.复合列组合框单元格.复合选项单元格.富文本单元格.滚动条单元格等.下面我们介绍前五种的基本用法. 组合框单元格ComboBoxCellType 你可以使用一个组合框单元格以显示一个可编辑的下拉列表,用户通过在显示的列表中进行选择完成对值的输入.你可以指定项目的列表是否包括