'定义当前行 r
Dim r As Row = Tables("预计总成本").Current
Select Case e.DataCol.name
Case "归类"
MessageBox.Show("归类列发生变化")
'如果归类变化,那么就是给三级目录执行归属的位置
Dim new_code As String = e.NewValue
Dim old_code As String = e.oldValue
'判断新值.的位置,用于拆除一级目录
Dim appare As Integer = new_code.IndexOf(".")
Dim f_code As String = left(new_code,appare)
r("目录编码") = e.NewValue & "."& r("序列号")
Dim contents As List(of String) = DataTables("预计总成本").GetValues("目录编码")
Dim f_r As DataRow = DataTables("一二级目录").Find("序号 = '"& new_code &"'")
Dim f_name As String = f_r("一级目录")
Dim s_name As String = f_r("二级目录")
'判断是否存在指定的一级目录
If contents.Contains(f_code) = False Then
Tables("预计总成本").AddNew()
Tables("预计总成本").Current("目录编码") = f_code
Tables("预计总成本").Current("目录") = f_name
Tables("预计总成本").Current("标记") = "一级"
End If
'判断是否存在指定的二级目录
If contents.Contains(new_code) = False Then
Tables("预计总成本").AddNew()
Tables("预计总成本").Current("目录编码") = new_code
Tables("预计总成本").Current("目录") = s_name
Tables("预计总成本").Current("标记") = "二级"
End If
'开启折叠模式
MessageBox.Show("准备开启折叠模式")
Dim st As New LayerTreeSetting
st.PathCol = "目录编码"
st.Separator = "."
st.TreeCol = "目录"
st.SortCol = "目录编码"
st.AggregateCols = {"合计_收入","合计_成本" ,"合计_盈亏"}
st.UseStyle = True
st.ExpandTo = -1
Tables("预计总成本").ShowGridTree(st)
'判断转移后,是否存在原目录(一级目录 二级目录)
MessageBox.Show("折叠模式已开启")
'为空时删除未设置
Case "合计_收入" , "合计_成本" , "工程量_数量" ,"口径工程量"
If r("标记") = "三级" Then
MessageBox.Show("三级目录行数据发生变化")
Dim p_r As Row = r.parent '父行
Dim g_r As Row = p_r.parent '爷行
If r("工程量_数量") <> 0 Then
r("单价_收入") = r("合计_收入") / r("工程量_数量")
r("单价_成本") = r("合计_成本") / r("工程量_数量")
r("单价_盈亏") = r("单价_收入") - r("单价_成本")
End If
If p_r("工程量_数量") <> 0 Then
p_r("单价_收入") = p_r.getvalue("合计_收入") / p_r("工程量_数量")
p_r("单价_成本") = p_r.getvalue("合计_成本") / p_r("工程量_数量")
p_r("单价_盈亏") = p_r.getvalue("合计_盈亏") / p_r("工程量_数量")
End If
If r("口径工程量") <> 0 Then
r("平米_收入") = r("合计_收入") / r("口径工程量")
r("平米_成本") = r("合计_成本") / r("口径工程量")
r("平米_盈亏") = r("平米_收入") - r("平米_成本")
r("工程量_含量") = r("工程量_数量") / r("口径工程量")
End If
If p_r("口径工程量") <> 0 Then
p_r("平米_收入") = p_r.getvalue("合计_收入") / p_r("口径工程量")
p_r("平米_成本") = p_r.getvalue("合计_成本") / p_r("口径工程量")
p_r("平米_盈亏") = p_r.getvalue("合计_盈亏") / p_r("口径工程量")
p_r("工程量_含量") = p_r("工程量_数量") / p_r("口径工程量")
End If
If g_r("口径工程量") <> 0 Then
g_r("平米_收入") = g_r.getvalue("合计_收入") / g_r("口径工程量")
g_r("平米_成本") = g_r.getvalue("合计_成本") / g_r("口径工程量")
g_r("平米_盈亏") = g_r.getvalue("合计_盈亏") / g_r("口径工程量")
End If
ElseIf r("标记") = "二级" Then
MessageBox.Show("二级目录行发生变化")
If r("工程量_数量") <> 0 Then
r("单价_收入") = r.getvalue("合计_收入") / r("工程量_数量")
r("单价_成本") = r.getvalue("合计_成本") / r("工程量_数量")
r("单价_盈亏") = r.getvalue("合计_盈亏") / r("工程量_数量")
End If
If r("口径工程量") <> 0 Then
r("平米_收入") = r.getvalue("合计_收入") / r("口径工程量")
r("平米_成本") = r.getvalue("合计_成本") / r("口径工程量")
r("平米_盈亏") = r.getvalue("合计_盈亏") / r("口径工程量")
r("工程量_含量") = r("工程量_数量") / r("口径工程量")
End If
ElseIf r("标记") = "一级" Then
MessageBox.Show("一级目录行发生变化")
If r("口径工程量") <> 0 Then
r("平米_收入") = r.getvalue("合计_收入") / r("口径工程量")
r("平米_成本") = r.getvalue("合计_成本") / r("口径工程量")
r("平米_盈亏") = r.getvalue("合计_盈亏") / r("口径工程量")
End If
End If
Case "计算口径"
MessageBox.Show("计算口径发生变化")
Dim k_r As DataRow = DataTables("计算口径").find("[计算口径] = '"& e.NewValue &"' ")
If k_r IsNot Nothing Then
r("口径工程量") = K_r("工程量")
End If
Case "工程量_计"
MessageBox.Show("对号选择发生变化")
Dim t As Row = Tables("预计总成本").Current
Dim now_code As String = t("归类")
Dim t_r As Row = t.parent
t_r("工程量_数量") = DataTables("预计总成本").Compute("sum(工程量_数量)", "归类 = '"& now_code &"' and 工程量_计 = true " )
End Select