Dim F_name ,S_name , kind_name As String
F_name = e.DataRow("一级目录")
S_name = e.DataRow("二级目录")
kind_name = e.DataRow("归类")
If e.DataCol.Name = "归类" AndAlso CurrentTable.Current("num_Fri") = Nothing '当选中的行归类列时,且未三级目录时,执行以下操作
Dim var As String = "↓↓↓↓"
Dim Fri_mulu As new List(of String)
Fri_mulu = e.DataTable.GetValues("一级目录")
Dim Start As Boolean
Start = Fri_mulu.Contains(var)'''''
Dim out_row As Row = CurrentTable.Current '定义要移动的行
'******************************************
'在此定义以后用到的变量
'获取一二级目录名称
'%%%%%%%%%%%%%%%%%%%%以下为解析编码
Dim InCome_code As String = e.DataRow("归类")
'MessageBox.Show(1)
If Income_code IsNot Nothing Then
Dim Find_row As DataRow
Find_row = DataTables("一二级目录").Find("编码 ='" & Income_code & "'")
Dim F_num As Integer = Find_row("Fri") ' 获取一级目录的数字编码
Dim S_num As Integer = Find_row("Sec")
Dim Fri_name As String = Find_row("一级目录") ' 把一级目录名保存到变量 Fri_name 中
Dim Sec_name As String = Find_row("二级目录") '把二级目录名保存到变量 Sec_name 中
'MessageBox.Show(Fri_name)
'MessageBox.Show(sec_name)
'MessageBox.Show(income_code)
'MessageBox.Show(2)
'MessageBox.Show(f_num)
'MessageBox.Show(s_num)
'获取二级目录的数字编码
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'为num_Fri num_sec 分别整合成一个集合
Dim Row_n As Integer = CurrentTable.Rows.Count - 1
'MessageBox.Show("可见行位置")
'MessageBox.Show(Row_n)
Dim Fri_list As new List(of Integer )
Dim Sec_list As new List(of Integer )
'MessageBox.Show(3)
'MessageBox.Show("ok")
For i As Integer = 0 To Row_n
Dim ff , ss As Integer
'MessageBox.Show(i)
ff = CurrentTable.Rows(i)("num_Fri")
Fri_list.Add(ff)
ss = CurrentTable.Rows(i)("num_Sec")
Sec_list.Add(SS)
Next
'************************************************************分别两个数字集合 一级目录数字集合 Fri_list Sec_list
' MessageBox.Show(4)
'MessageBox.Show("到这里了吗")
'**********************************************
Select Case start
Case False ' 当第一个时,执行以下代码
'MessageBox.Show("为空时执行")
'MessageBox.Show(5)
CurrentTable.Current("一级目录") = Nothing
CurrentTable.Current("二级目录") = Nothing
CurrentTable.Current("num_Fri") = F_num
CurrentTable.Current("num_Sec") = S_num
CurrentTable.AddNew()
CurrentTable.Current("一级目录") = "↓↓↓↓"
CurrentTable.Current("num_Fri") = 1
CurrentTable.Current("num_Sec") = 1
CurrentTable.AddNew()
CurrentTable.Current("一级目录") = Fri_name
CurrentTable.AddNew()
CurrentTable.Current("二级目录") = Sec_name
'获取position
Dim i As Integer = CurrentTable.Position
out_row.Move(i)
CurrentTable.AddNew()
CurrentTable.Current("一级目录") = "合计"
CurrentTable.Current("num_Fri") = 999
CurrentTable.Current("num_Sec") = 999
Case True
'MessageBox.Show("已经存在第一条之后的三级目录归类")
'MessageBox.Show(f_num)
'MessageBox.Show(s_num)
' MessageBox.Show(6)
'''''''''''''''''''''''''''''''''''''''''''''''''''''核心处代码
If Sec_list.Contains(s_num) = True Then '当二级目录包含时
Dim f_same_position As Integer = CurrentTable.FindRow("num_sec ='" & s_num & "'")
' MessageBox.Show(s_num)
'MessageBox.Show("有相同二级目录时执行")
out_row.Move(f_same_position)
CurrentTable.Current("一级目录") = Nothing
CurrentTable.Current("二级目录") = Nothing
CurrentTable.Current("num_Fri") = F_num
CurrentTable.Current("num_Sec") = S_num
'else 改成elseif
'MessageBox.Show(7)
Else
sec_list.Sort
'用for 找位置
'MessageBox.Show(8)
Dim f_max As Integer
For Each i As Integer In sec_list
If i> s_num Then
f_max = i
Exit For
End If
Next
'MessageBox.Show(9)
' MessageBox.Show(f_max)
'MessageBox.Show("到这里了")
'找到大于是s_num 的值了,赋值给f_max
'查找f_max 在table中的位置 '赋值给f_max_position
Dim f_max_position As Integer = CurrentTable.FindRow("num_sec ='" & f_max & "'")
If f_max = 999 Then
'MessageBox.Show(10)
CurrentTable.Position = f_max_position
'33333333333333333333333333333333333333333333333
If fri_list.Contains(f_num) = True Then
CurrentTable.InsertNew()
CurrentTable.Current("二级目录") = sec_name
out_row.Move(f_max_position )
CurrentTable.Current("一级目录") = Nothing
CurrentTable.Current("二级目录") = Nothing
CurrentTable.Current("num_Fri") = F_num
CurrentTable.Current("num_Sec") = S_num
Else
CurrentTable.InsertNew()
CurrentTable.Current("二级目录") = sec_name
CurrentTable.InsertNew()
CurrentTable.Current("一级目录") = fri_name
out_row.Move(f_max_position + 1)
CurrentTable.Current("一级目录") = Nothing
CurrentTable.Current("二级目录") = Nothing
CurrentTable.Current("num_Fri") = F_num
CurrentTable.Current("num_Sec") = S_num
End If
'MessageBox.Show(11)
Else
If fri_list.Contains(f_num) = True Then
CurrentTable.Position = f_max_position - 1
'MessageBox.Show(12)
CurrentTable.InsertNew()
CurrentTable.Current("二级目录") = sec_name
out_row.Move(f_max_position - 1)
CurrentTable.Current("一级目录") = Nothing
CurrentTable.Current("二级目录") = Nothing
CurrentTable.Current("num_Fri") = F_num
CurrentTable.Current("num_Sec") = S_num
Else
CurrentTable.Position = f_max_position - 2
CurrentTable.InsertNew()
CurrentTable.Current("二级目录") = sec_name
CurrentTable.InsertNew()
CurrentTable.Current("一级目录") = fri_name
out_row.Move(f_max_position - 1)
CurrentTable.Current("一级目录") = Nothing
CurrentTable.Current("二级目录") = Nothing
CurrentTable.Current("num_Fri") = F_num
CurrentTable.Current("num_Sec") = S_num
End If
'MessageBox.Show(13)
End If
End If
'(1)在此范围内编辑 不包含的情况
End Select
''''''''''''''''''''''''''''''''''''''''''''''''''''''''核心处代码
End If
End If
If e.DataCol.Name = "计算口径" Then
Dim f_row As DataRow
Dim filte = CurrentTable.Current("计算口径")
f_row = DataTables("计算口径").Find("计算口径 = '"& filte &"' ")
CurrentTable.Current("口径工程量") = f_row("工程量")
End If
If e.DataCol.Name = "num_fri" Then
If CurrentTable.Current("num_fri") IsNot Nothing Then
Dim drs As List(of DataRow)
drs = DataTables("预计总成本").Select("[序列号] > 0")
Dim amount ,total ,cost As Double
For Each dr As DataRow In drs
Dim xn As Integer
xn = dr("序列号")
With DataTables("整理清单")
amount = .Compute("sum(工程量)","序列号 ='" & xn & "'")
Total = .Compute("sum(综合合价)", "序列号 ='" & xn & "'")
End With
cost = DataTables("人材机明细").Compute("sum(不含税合价)","序列号 ='" & xn & "'")
dr("工程量_数量") = amount
dr("合计_收入") = total
dr("单价_收入") = total / amount
Next
End If
End If
If e.DataCol.Name = "口径工程量" Then
If CurrentTable.Current("合计_收入") IsNot Nothing AndAlso CurrentTable.Current("合计_成本") IsNot Nothing Then
Dim dr As Row = CurrentTable.Current
dr("平米_收入") = dr("合计_收入") / dr("口径工程量")
dr("平米_成本") = dr("合计_成本") / dr("口径工程量")
dr("平米_盈亏") = dr("平米_收入") - dr("平米_成本")
End If
End If