通过代码增加前驱任务

如果想通过代码增加前驱任务,可以参考以下代码:

Dim gv As GanttView = e.Form.Controls("GanttView1").GanttView
gv.Tasks.Clear()
gv.StartDate =
New Date(2024, 9, 1)

Dim
tk1 As New Gantt.Task
tk1.Name =
"Task1"
tk1.Mode = Gantt.TaskMode.Automatic
tk1.ConstraintDate =
New Date(2024, 9, 2)
tk1.ConstraintType = Gantt.ConstraintType.StartNoEarlierThan
tk1.Duration = 3
tk1.DurationUnits = Gantt.DurationUnits.Days
gv.Tasks.Add(tk1)

Dim
tk2 As New Gantt.Task
tk2.Name =
"Task2"
tk2.Mode = Gantt.TaskMode.Automatic
tk2.ConstraintDate =
New Date(2024, 9, 6)
tk2.ConstraintType = Gantt.ConstraintType.StartNoEarlierThan
tk2.Duration = 3
gv.Tasks.Add(tk2) 

Dim tk3 As New Gantt.Task()
tk3.Name =
"Task3"
tk3.Mode = Gantt.TaskMode.Automatic
tk3.ConstraintDate =
New Date(2024, 9, 6)
tk3.ConstraintType = Gantt.ConstraintType.StartNoEarlierThan
tk3.Duration = 6
gv.Tasks.Add(tk3)


'
Task1设置为Task3的前驱任务,类型为FinishToStart(结束 - 开始)
Dim
pre As New Gantt.Predecessor()
pre.PredecessorTask = tk1
pre.PredecessorType = Gantt.PredecessorType.FinishToStart
'前驱类型
pre.Lag = 5
'Task1结束5个工作日后,才能开始Task3
tk3.Predecessors.Add(pre)

'
Task2设置为Task3的前驱任务,类型为StartToStart(开始 - 开始)
pre =
New Gantt.Predecessor()
pre.PredecessorTask = tk2
pre.PredecessorType = Gantt.PredecessorType.StartToStart
'前驱类型
tk3.Predecessors.Add(pre)

分析上面的代码,Task3开始的条件有三个,分别是:

1、不能早于2024年9月6日

2、Task1结束5个工作日之后

3、Task2已经开始

生成的甘特图如下:

提示

Predecessor除了PredecessorTask属性,还有一个PredecessorTaskID属性,用于指定前置任务的ID。

所以

pre.PredecessorTask = tk1

也可以改为:

pre.PredecessorTaskID = tk1.ID

创建Task的时候,会自动生成Task的ID,一般不要自行设置,以免出现重复。


本页地址:http://www.foxtable.com/webhelp/topics/3989.htm