1 你的收入列原来是表达式列,应改为普通数据列
2 修改代码 : 如果支出,数值1,数值2 变化时重新计算
Select Case e.DataCol.Name
Case "支出","数值1","数值2"
Dim dr As DataRow
Dim drs As List(of DataRow)
dr = e.DataTable.Find("[_SortKey] < " & e.DataRow("_SortKey"), "[_SortKey] Desc") '找出上一行
If dr Is Nothing Then '如果没有找到上一行,说明本行就是第一行
e.DataRow("收入") = e.DataRow("数值1") * e.DataRow("数值2")
e.DataRow("余额") = e.DataRow("收入") - e.DataRow("支出")
dr = e.DataRow
End If
drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey"), "[_SortKey]")
For i As Integer = 1 To drs.Count - 1 '重算余下行的收入 余额
e.DataRow("收入") = e.DataRow("数值1") * e.DataRow("数值2")
drs(i)("收入") = drs(i)("数值1") * drs(i)("数值2")
drs(i)("余额") = drs(i-1)("余额") + drs(i)("收入") - drs(i)("支出")
Next
End Select