WINFORM中使用DEV的日程控件《SchedulerControl》实现甘特图效果

无图不说话,先看效果图:

首先在WINFORM窗体中添加两个控件:

1、左侧《ResourcesTree》用于显示具体任务名称(在日程中表现为Resources)

2、右侧《SchedulerControl》显示甘特图

3、设置ResourcesTree的属性SchedulerControll值为SchedulerControl的Name,实现两个控件的相互关联

数据绑定

在SchedulerControl中需要为三个数据源进行数据绑定(在本例中:每一个资源对应一条任务

1、Resources(资源,在本例中也是任务

/*资源属性映射*/
var sourceMap = this.schedulerStorage1.Resources.Mappings;
sourceMap.Caption = "TaskName";
sourceMap.Id = "ID";
sourceMap.ParentId = "ParentID";
/*数据绑定*/
this.schedulerStorage1.Resources.DataSource = list;

2、AppointmentDependencies(依赖关系,即前后置任务)

/*依赖关系属性映射*/
var dependceMap = schedulerStorage1.AppointmentDependencies.Mappings;
dependceMap.DependentId = "ID";/*对应任务ID*/
dependceMap.ParentId = "BeforeID";/*对应任务ID*/
dependceMap.Type = "DependencyType";
/*数据绑定*/
this.schedulerStorage1.AppointmentDependencies.DataSource = list;

3、Appointment(日程,即具体的任务信息)

/*日程属性映射*/
var appointMentMap = this.schedulerStorage1.Appointments.Mappings;
appointMentMap.ResourceId = "ID";/*资源ID*/
appointMentMap.AppointmentId = "ID";/*任务ID*/
appointMentMap.Start = "PlanStart";
appointMentMap.End = "PlanEnd";
appointMentMap.Description = "TaskName";
appointMentMap.AllDay = "AllDay";
appointMentMap.Subject = "TaskName";
appointMentMap.PercentComplete = "PercentComplete";
/*数据绑定*/
this.schedulerStorage1.Appointments.DataSource = list;

界面显示调整

1、调整日程控件显示模式为甘特图,设置SchedulerControl的属性ActiviViewType=Gantt

2、调整每页显示的任务数量(如果不设置此属性,所有的任务都在一页显示,数量非常多的时候会压缩行高),设置SchedulerControl.Views.GanttView.ResourcePerPage=10

3、如果不希望视图可切换到其他模式(按日显示、月显示、周显示等),禁用默认的右键菜单,并在SchedulerControl.Views中设置其他视图的属性Enabled=false。

其他补充

控件ResourcesTree实际继承的的是DEV中的控件TreeList并扩展了与日程控件SchedulerControl的关联。

在一个Resource中实际可以添加非常多的Appointment,在本例中强制Resource与Appointment进行一对一的关联。

猜你喜欢

转载自blog.csdn.net/timfeng2009/article/details/81328048
今日推荐