Richard.Ma 发表于 2019-9-3 10:37:59

使用FlexGrid中的列脚汇总数据

使用Flexgrid时,在很多情况下我们可能希望显示通过列显示聚合函数的结果。我们希望这些结果(或摘要)在所有记录的末尾(例如,在网格的最后一行)中呈现,这些记录始终保持可见 - 就像列标题一样。

这时候就需要列脚功能。

在FlexGrid中引入列页脚


为了使数据更具逻辑性和可理解性,ComponentOne WinForms 2019 v2版本在FlexGrid中引入了列页脚。现在,可以在网格的列页脚中显示聚合,并完全控制它们,就像它们显示的内容和它们的显示方式一样。

让我们通过一个简单的场景来理解网格列页脚的用法和实现 - 分析和总结漫威电影的总收藏。 漫威长期以来一直是超级英雄电影特许经营的主要电影公司。自从钢铁侠2008年放弃以来,他们一直处于热潮中,在全球票房收入超过213.8亿美元。由于这些电影吸引了许多人的人口,我想以此为例。

我们将使用FlexGrid中的列页脚汇总并显示Marvel电影的总集合。我们将显示汇总,例如分配给任何电影的最高和最低预算,所有电影中的最高开放周收集,迄今为止的全球收集总数等。




在FlexGrid中实现列页脚


我们将FlexGrid绑定到一个数据源,其中包含有关预算,开放周末收集和不同漫威电影的全球收藏的信息。现在FlexGrid已绑定,然后添加列脚行以在FlexGrid中显示逐列聚合。

我们可以通过向FlexGrid的Footers对象的Descriptions集合添加FooterDescription类型的项来添加页脚行。

__flex.Footers.Descriptions.Add(new FooterDescription()); _



请注意,可以向网格添加多个页脚行。

让我们看看如何使用上面添加的页脚行来显示所需列的聚合。


固定位置
我们可以确定页脚是否固定在网格的底部并变为不可滚动,或者它将在最后显示并像普通行一样滚动。这可以通过设置FlexGrid的Footers对象的Fixed属性来完成。

_flex.Footers.Fixed = true;
上例中的页脚位置是固定的。我们还可以通过在属性窗口中展开“页脚”选项来设置此属性。

页脚标题
如果我们想要显示任何文本以及计算值以使它们更有意义,我们可以使用Caption属性来显示汇总值之前的文本。

在我们的示例中,我们在页脚行的每个单元格中添加了标题,我们在其中执行了任何计算。

_flex.Footers.Descriptions .Aggregates .Caption =“Max Budget (In Million $):”;

合计
我们可以通过将Aggregate属性设置为聚合函数的任何可用成员(如Max,Min,Sum,Count,Percent,Average等)来计算列的聚合值。

在我们的用例中,我们使用Aggregate属性计算了最大预算,平均周末集合,如下所示:

_flex.Footers.Descriptions.Aggregates.Add(new AggregateDefinition() { Column = 4, Aggregate = AggregateEnum.Max });

_flex.Footers.Descriptions.Aggregates. Aggregate = AggregateEnum.Max;

表达式
这是使基于多列执行复杂计算成为可能的关键属性。要使用此属性,请添加对C1.Win.ExpressionEditor程序集的引用,并确保将Aggregate属性设置为AggregateEnum.None。

在这个例子中,我们在网格的最后一列“WorldWideCollection”中使用了Expression来计算Marvel的电影总收集量。

_flex.Footers.Descriptions .Aggregates .Expression =“Sum(-)”;




样式和OwnerDraw
为了设置Footer行的样式,FlexGrid控件的命名空间提供了一个名为CellStyleCollection的类,它公开了许多属性来自定义外观,例如backColor,forecolor,font,height和width。

列页脚还允许使用OwnerDraw执行自定义单元格绘制。

设计时支持
也可以在设计界面添加和自定义页脚行:

在Visual Studio的“属性”窗口中打开flexgrid的属性。
通过单击“页脚”下“描述”属性的省略号按钮打开FooterDescription集合编辑器。




所有上面给出的属性都可以通过设计者在AggregateDefinition Collection Editor的帮助下设置,该编辑器在单击FooterDescripti中Aggregates属性的省略号按钮时出现

attach 发表于 2019-9-25 18:10:32

列脚行的数据可以格式化吗? 比如计算平均值的小数有很多位,我只想保留两位,可以做到吗?

Richard.Ma 发表于 2019-9-27 14:01:48

提供了Expression 公式编辑器,可以部分实现格式的转换,

比如例子中的第7列列脚,如果要保留1位小数,可用round函数
_flex.Footers.Descriptions.Aggregates.Expression = "Round(Sum(+),1)";

attach 发表于 2019-10-9 11:13:40

感谢回答,格式转换了解了。
还有个问题就是新版本的表格控件是否取消了 SaveExcel 方法,现在如果需要导出Excel应该怎么办?

Richard.Ma 发表于 2019-10-9 12:15:52

没有取消,只是需要引用

使用方法和原来还是一样的

另外,问题贴请发到对应平台的论坛版块中,教程版块仅是用于大家学习产品

attach 发表于 2019-10-9 13:35:50

好的,谢谢了

Richard.Ma 发表于 2019-10-9 14:03:31

不客气

bruce 发表于 2024-9-20 12:07:20

如何在拖拽列时,页脚也随之拖动?

Richard.Ma 发表于 2024-9-20 18:24:31

已经在帖子中给你回复
https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=226979
页: [1]
查看完整版本: 使用FlexGrid中的列脚汇总数据