在开发ERP系统的数据报表时,几乎都是需要看到【小计】、【总计】这样的汇总数据的,在数据报表的显示列表中,最下面的一行通常就是【小计】或者【总计】的汇总行。如果手动为每个报表都增加汇总行,那也是一份不小的工作量。
所以,如果能自动为每个数据报表自动添加【小计】、【总计】汇总行,那将可以节省不少的开发时间。本文将给出实现这种方案的思路原理以及源码。
本文中,报表数据的显示使用的是WinForm的DataGridView控件,如果是Web项目,其原理和思路是一样的。
举个栗子,零售店POS机上查询销售单的效果如下图所示:
在报表的最下面有一行【总计】,对数量和金额项进行了汇总。
下面,我们来详细讲解是如何自动为其添加【总计】这一汇总行的。
一.基本原理
1.一般而言,数据报表的现实的核心数据是DataGridView绑定的一个列表List<T>,每一个T对象对应着报表中的一行数据。
2.在数据报表中,【小计】、【总计】所对应的汇总行与上面列表中的其它普通行,是有区别的,所以,它们对应的T对象也是有区别的。
3.我们通过T的一个名为 IsStatistics 的bool属性来区别普通行与汇总行。如果IsStatistics为true,表示其对应的行就为汇总行。
4.为了达到上面描述的这一目的,我们让T必须实现接口IStatisticabled这个接口。
public interface IStatisticabled { bool IsStatistics { set; get; } }