当前位置: 首页 > news >正文

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

         因为做的项目很多都和数据统计相关,一直要做很多的报表,而其中很大的一部分的报表都是数据交叉表的类型,也因为最近在改版.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数组来建立数据交叉表模型

转载于:https://www.cnblogs.com/xuanye/archive/2007/04/23/724354.html

相关文章:

  • VLAN从入门到精通
  • 晕菜~~~竟然出了这样的事情~~
  • (转)Oracle存储过程编写经验和优化措施
  • cisco考试报名点查询
  • 如何添加右键菜单?
  • 网络负载平衡(NLB)详解!
  • 远见卓识,领导力在于把握企业潮流
  • 对于QQ中经常出现的一条垃圾信息的调侃回复
  • ARP病毒***
  • Google adsense介绍以及申请方法
  • 天热了,给博客换一个清凉皮肤
  • 去掉烦人的微软正版提示
  • 网卡异常故障
  • 读书:淘宝网倒立者赢
  • SYN***
  • [译]前端离线指南(上)
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • CSS 专业技巧
  • echarts的各种常用效果展示
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • HTTP--网络协议分层,http历史(二)
  • Java Agent 学习笔记
  • javascript 哈希表
  • JavaScript 奇技淫巧
  • Java方法详解
  • Java应用性能调优
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • mysql innodb 索引使用指南
  • nodejs调试方法
  • Promise面试题2实现异步串行执行
  • SQLServer之索引简介
  • uva 10370 Above Average
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 第2章 网络文档
  • 订阅Forge Viewer所有的事件
  • 关于List、List?、ListObject的区别
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 前嗅ForeSpider教程:创建模板
  • 人脸识别最新开发经验demo
  • 微信小程序:实现悬浮返回和分享按钮
  • 为什么要用IPython/Jupyter?
  • 小程序01:wepy框架整合iview webapp UI
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 小试R空间处理新库sf
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • !!Dom4j 学习笔记
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • (42)STM32——LCD显示屏实验笔记
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (十一)c52学习之旅-动态数码管
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (转) Android中ViewStub组件使用
  • . NET自动找可写目录