无图不说话,先看效果图:
首先在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进行一对一的关联。
DEMO地址:
链接:https://pan.baidu.com/s/1YIDz3S9Zcb9s2sd7B-ck1Q
提取码:x0bm