一个数据交叉表控件的实现(开篇)

         因为做的项目很多都和数据统计相关,一直要做很多的报表,而其中很大的一部分的报表都是数据交叉表的类型,也因为最近在改版.Net的自定义高级分析的功能,所以忽然萌生了要写一个控件来一劳永逸。把我在设计编码过程中得到的启示和收获和大家一起分享 。

1:目的
      实现数据的任意交叉统计功能,和前台显示功能;
2:功能
      可以绑定datasource,datatable,dataview中的任意一个数据源(其实这块没有什么大的东西,最终转化成DataTable)
      指定在哪些纬度1 放在横轴上,哪些纬度放在纵轴上(即指定DataTable的设定纬度数据所在的列名),设定数值列(只支持一个数值列,多个数值列的显示比较复杂,以后再研究)
     自定义显示的格式,样式
     自定义单员格单击函数
     分类合计功能;
3:思考
      设计这样一个控件的难度其实并不在于统计功能,还是在如何显示,如何能根据提供属性来画出一个交叉数据表,table的构建。所以虽然控件支持统计功能,但是还是建议使用SQL本身的统计功能,先Group好了再由控件显示(效率可要提高N倍)。
      绑定了DataTable如何让他成为交叉的数据列那呢?假设图1中的表是DataTable的数据列,那么如何来将下表展现为如图2-图5所示的格式呢?
  

Image00023.gif
图 1
Image00025.gif
图2
Image00026.gif
图3
Image00027.gif
图4
Image00028.gif
图5

上面是最简单的要求,当然横竖轴的系列,应该理论上是无限级的,至此我陷入了如何来计算rowspan和colspan的苦恼之中 。
通过现有的DataTable的列属性来计算实在是太复杂,所以我想到构建用于模拟横竖轴的类,同时也方便以后做扩展
简单的类图如下:
ClassDiagram1.gif
图6

下回内容:通过组建Axes轴和Cell数组来建立数据交叉表模型
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值