这是帮助文件中的例子,应该对你的问题有帮助,在帮助文件中搜索“更多的例子“就能找到
完成日期等于起始日期加上执行天数:
我们可以在该表的DataColChanged事件中加入下面的代码:
If e.DataCol.Name = "起始日期"
OrElse e.DataCol.Name = "执行天数"
Then
If e.DataRow.IsNull("起始日期")
OrElse e.DataRow.IsNull("执行天数") Then
e.DataRow("完成日期") = Nothing
Else
e.DataRow("完成日期") = e.DataRow("起始日期").AddDays(e.DataRow("执行天数"))
End
If
End
If
上面的代码多处使用了e.DataRow和e.DataCol,为了让代码看上去简洁一点,我们可以用变量来代替它们:
Dim dc As
DataCol = e.DataCol
Dim dr
As
DataRow = e.DataRow
If
dc.Name = "起始日期"
OrElse dc.Name =
"执行天数"
Then
If dr.IsNull("起始日期") OrElse dr.IsNull("执行天数") Then
dr("完成日期") = Nothing
Else
dr("完成日期") = dr("起始日期").AddDays(dr("执行天数"))
End
If
End
If
采用何种编码风格,完全看个人的偏好。
示例三
上面的例子是根据开始日期和执行天数计算完成日期,如果反过来,要根据开始日期和完成日期计算执行天数,可以将DataColChanged事件代码设置为:
Select
Case e.DataCol.Name
Case
"开始日期","完成日期"
Dim dr As
DataRow = e.DataRow
If dr.IsNull("开始日期") OrElse dr.IsNull("完成日期") Then
dr("执行天数") =
Nothing
Else
Dim tp
As TimeSpan =
dr("完成日期") -
dr("开始日期")
dr("执行天数") = tp.TotalDays
End
If
End
Select