您的位置:首页 > 其它

devexpress15.2 甘特图

2017-05-05 14:53 120 查看
开发环境:VS2010+.net framework4.0;

数据库:access 2003;

首先贴上软件运行时的截图:



页面左边是一个ResourcesTree控件,右边是一个SchedulerControl,将SchedulerControl的ActiveViewType设置为Gantt就可以显示甘特图了。

包含这两个控件的容器是一个SplitContainerControl。

ResourcesTree控件与SchedulerControl的绑定是通过它的属性SchedulerControl的设置的。

因为Devexpress是开源的,所以安装完成后可以通过查看Demo来找到这个demo对应的源码。用VS打开源码后发现ResourcesTree和SchedulerControl的数据绑定

都是通过数据绑定控件事先配置好数据源的,而这种方式在实际开发中并不提倡,所以我们需要动态地为这两个控件配置数据源。

打开ResourcesTree的RunDesigner界面,添加Description和Days列,并绑定对应的FieldName。

ResourcesTree数据源对应的数据表是Resources,表结构如下:



SchedulerControl的数据源对应的数据库表是Tasks,表结构如下:



当你添加了SchedulerControl控件后,会自动生成一个SchedulerStorage的组件,这个组件是专门为SchedulerControl提供数据维护服务的,

所有的数据都是通过这个组件来管理的。

打开这个组件的属性窗口,找到Resources---Mappings,配置如下:



这三个字段都是Resources表的字段,这就是建立一个字段的对应关系。

接下来找到Appointments---Mappings,配置如下:



这些字段对应Tasks表中的字段。

接下来这步非常重要,就是让SchedulerControl与ResourcesTree建立起行对应关系。找到SchedulerControl的GroupType属性,将它设置为Resource。

那么接下来就可以给控件赋值了,赋值代码如下:



其中AppointmentDependencies.DataSource后面再介绍。

这些做完之后就可以完成数据的绑定了。

那么当我们需要添加任务的怎么办呢?前面说过schedulerStorage是专门管理SchedulerControl的数据的,所以我们需要为schedulerStorage绑定一个添加任务时

触发的事件,通过事件处理函数将新添加的任务保存,添加任务触发的事件名:AppointmentsInserted。下面是我写的事件处理函数:



除了添加还有修改、删除等操作都是通过事件来处理的,这里就不再一 一列举了。

下面我们来说说任务之间的依赖关系。不知道大家注意到没有,每人任务之间都有一根带有箭头的实线连接,那个这个箭头是怎么来的呢?

我们在界面上右击,点击新建日程安排来新建一个任务,任务建完之后,如果你计划在执行完某一个任务(任务A)后接着执行你新建的这个任务(任务B),那你在

任务A上右击,点击"创建依赖",然后把那根线拖到任务B上,那么任务A和任务B之间的依赖关系就创建完成了。但是我们还要把这种依赖关系存入到数据库中,还是要

使用事件来处理,事件名称:AppointmentDependenciesInserted。

依赖表的设计视图如下:



其中Dependent就是任务B的ID,Parent就是任务A的ID,这两个ID都对应Tasks表中ID。最后Type字段是意思是你创建的依赖的类型,默认创建的依赖类型

是"结束到完成",当然我们也可以修改这种依赖类型。双击那根带有箭头的实线会弹出一个窗口,如图:



从这里就修改依赖的类型。当然我们还要通过对应的事件将这种修改保存到数据库。

最后再说一点,左边的resourcesTree如何和右边schedulerControl的Appointment保持行对应关系呢?我们在新建日程安排的时候,有一个Resource(资源)字段,

你在这里选的是哪个资源,显示的时候就会显示在这个资源对应的行上。体现在数据库上就是Tasks表的ResourceId字段是Resources表的外键。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  devexpress 甘特图