此主题相关图片如下:3.png

数据表如上
如下代码,我单层展开的方法如下,如何可以做到一次全部展开,不定层次的BOM表,BOM阶层如上,可能会有4层,5层,或者更多。
Dim tb As Table = Tables(e.Form.Name & "_" & "Table1")
Dim cn() As String = {"i","总序号","父阶代码","子阶代码","名称","规格型号","单位","用量","选用料","车间","组别","默认仓库名称","备注","序号"}
Dim r As Row = tb.Current
Dim t As String = r("i")
Dim sn As String,sn1 As String
If t = "+" Then
tb.StopRedraw
sn = r("排序号")
sn1 = r("总序号")
r("i") = "-/\-"
Dim drs As List(of DataRow)
drs = DataTables("BOM").Select("父阶代码 ='" & r("子阶代码") & "'")
For Each dr As DataRow In drs
Dim r1 As Row = tb.AddNew
For i As Integer = 0 To cn.Length - 1
If cn(i) <> "总序号" Then
r1(cn(i)) = dr(cn(i))
Else
r1("总序号") = sn1 & "." & dr("序号")
r1("排序号") = sn & "." & Format(dr("序号"),"000")
Dim str As String = r1("总序号")
r1("阶层") = str.split(".").length
End If
Next
Next
tb.Sort = "排序号"
tb.ResumeRedraw
End If
[此贴子已经被作者于2017/4/5 9:32:12编辑过]