使用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属性的省略号按钮时出现
列脚行的数据可以格式化吗? 比如计算平均值的小数有很多位,我只想保留两位,可以做到吗? 提供了Expression 公式编辑器,可以部分实现格式的转换,
比如例子中的第7列列脚,如果要保留1位小数,可用round函数
_flex.Footers.Descriptions.Aggregates.Expression = "Round(Sum(+),1)";
感谢回答,格式转换了解了。
还有个问题就是新版本的表格控件是否取消了 SaveExcel 方法,现在如果需要导出Excel应该怎么办? 没有取消,只是需要引用
使用方法和原来还是一样的
另外,问题贴请发到对应平台的论坛版块中,教程版块仅是用于大家学习产品
好的,谢谢了
不客气 如何在拖拽列时,页脚也随之拖动? 已经在帖子中给你回复
https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=226979
页:
[1]