Rdlc实现类甘特图效果

什么是甘特图?
甘特图是一种条形图,它说明了项目进度表。此图表列出了垂直轴上要执行的任务以及水平轴上的时间间隔。图表中水平条的宽度显示了每个活动的持续时间。甘特图说明了项目的终端元素和摘要元素的开始和结束日期。终端元素和摘要元素构成了项目的工作分解结构。现代甘特图也显示了依赖性(即优先网络)活动之间的关系。
甘特图有时等同于条形图。
甘特图维基百科定义
背景:
一个项目的测试生命周期,历经多个阶段,在每个阶段都会有不同的测试策略,并经历多轮测试。对其进行抽象,可以发现,每个阶段、每轮测试都有一个重复性工作:发布测试任务、分配测试任务、输出测试报告。

作为一个具有技术敏感度的程序员,提高工作效率的方式,就是把重复性的工作通过程序的方式让它变得简单、高效。
这就是测试任务分配系统的由来。

测试任务分配系统:项目负责人创建测试任务,在测试任务中指派特定测试模块给相应的测试人员。任务创建成功后,相关测试人员可以查看到分配给自己的测试模块。测试完成后,填写对应的测试信息,并提交。项目负责人查看测试任务,待所有测试模块(测试子任务)测试完成后,编辑测试总结,导出测试报告,测试任务完成。
项目需求:
以上面的项目背景为基础,有一个新增的需求,即查看系统中的测试任务安排,以便在项目计划发生改变时,修改测试任务。
需求分析:
这个需求可以拆分成两个。第一,查看系统中的测试任务;第二,修改测试任务。
考虑到测试任务有很多属性:任务名、测试开始时间/测试结束时间、任务状态、测试项目、测试类型等,可以实现多条件查询,并以网格形式显示查询结果。
对于第二个需求,则可以调用系统中已实现的测试任务修改模块。
问题:
按照需求分析,最后实现的效果如下图所示。
然而,从项目管理的角度来看,这种展示并不够直观,不能突出任务的一些重要属性,如测试时间测试周期任务先后关系。而这些属性对于统筹项目测试计划的人来说,又是至关重要的。
在这里插入图片描述
解决方案:
分析测试任务,可以发现每个测试任务都有测试开始时间、结束时间、测试周期等信息。而甘特图就是通过活动列表和时间刻度表示出特定项目的顺序与持续时间,并能直观地表明计划何时进行。所以,可以通过甘特图展示查询到的测试任务。
技术选择:
通过微软RDLC报表中的Chart实现一种类似甘特图的形式。
其实,如果想实现真正的甘特图,可以借助Devexpress 的SchedulerControl 实现。
devexpress15.2 甘特图
关于Winfrom中RDLC报表的设计可以参考我的博客:Winform中报表RDLC的设计与实现
具体实现:
效果图:
在这里插入图片描述

  1. 添加报表测试任务数据集
    该数据集用于绑定到Chart上。

  2. RDLC设计器中右键插入图表:范围 -> 范围条形图
    在这里插入图片描述

  3. 选中图表,设置图表数据
    图表数据主要包括三部分:值、类别组、序列组。
    值:横坐标轴值
    类别组:任务名
    序列组:项目
    一个项目会有多个测试任务。可以把序列组理解为类别组的父类。
    在这里插入图片描述

  • 值:条形图横坐标轴值,即任务的开始时间。
    点击“start_time”下尖括号,选择序列属性,设定探顶值为任务结束时间(end_time),探底值为任务开始时间(start_time)。
    一句话概括,效果图中,条形图的位置根据start_time而定,条形图的长度根据start_time和end_time自动延伸或缩短。
    在这里插入图片描述

点击“start_time”下尖括号,选择显示数据标签
图表中,右键选择序列标签,设置标签数据。(条形图上显示的值)
在这里插入图片描述

  • 类别组:任务名
    根据任务开始时间排序(倒序),这样开始时间越早的任务显示在越上方。

在这里插入图片描述

  • 序列组
    没有特殊的设置
  1. 代码中为数据集绑定数据源,然后运行程序。
    这部分可以参考我之前的博客:Winform中报表RDLC的设计与实现

最后运行显示的时候,遇到一个坑
在这里插入图片描述
后来,百度才知道
mysql连接字符串中 allow zero datetime=true 导致datetime转换失败,MySql.Data.Types.MySqlDateTime”的对象无法转换为类型“System.Nullable`1[System.DateTime] 。连接字符串去掉allow zero datetime=true就好了。

以上就是通过Rdlc实现类甘特图效果的思考及实现过程

猜你喜欢

转载自blog.csdn.net/Nancy50/article/details/83011319