任务表的DataColChanged事件代码改为:
Select Case e.DataCol.Name
Case "开始日期","结束日期"
Dim dr As DataRow = e.DataRow
If dr.IsNull("开始日期") OrElse dr.IsNull("结束日期") Or dr("开始日期") > dr("结束日期")
dr("生产周期") = Nothing
dr("已过天数") = Nothing
dr("剩余天数") = Nothing
Else
Dim tp As TimeSpan = dr("结束日期") - dr("开始日期")
dr("生产周期") = tp.TotalDays
If Date.Today > = dr("开始日期") AndAlso Date.Today <= dr("结束日期")
dr("已过天数") = (Date.today - cdate(dr("开始日期"))).TotalDays
dr("剩余天数") = dr("生产周期") - dr("已过天数")
Else
dr("已过天数") = Nothing
dr("剩余天数") = Nothing
End If
End If
End Select
在项目事件AfterOpenProject事件中增加一行代码:
DataTables("任务").DataCols("开始日期").RaiseDataColChanged()
这样每次打开项目,就得到了最新的数据,管它数据是否是变化的,至少我打开项目之后,数据是最新的,而且是不变的。