Dim tv As WinForm.TreeView = Args(0) '---目录树
Dim t As Table = Args(1) '--窗口中的表
Dim t1 As String = args(2) '--筛选准则--
tv.StopRedraw
Dim cmd As New SQLCommand
cmd.CommandText = "Select * Fr om {" & t.DataTable.Name & "} Where (km2 = '" & t1 & "' and km7 Is Not Null) Order By km7"
Dim dt As DataTable = cmd.ExecuteReader
Dim lst As New List(Of Integer)
For Each dr As DataRow In dt.DataRows
If lst.Contains(dr("km7").Length) = False Then
lst.Add(dr("km7").Length)
End If
Next
lst.Sort '------科目代码长度集合
tv.Nodes.Clear
For Each dr As DataRow In dt.DataRows '----遍列表生成目录树----
If tv.Nodes.Contains(dr("km7")) = False Then
If dr.IsNull("km3") = False Then
If tv.Nodes.Contains(dr("km3")) = False Then
tv.nodes.Add(dr("km3"))
tv.nodes(dr("km3")).Nodes.Add(dr("km7"),dr("km4") & "-" & dr("km7"))
'tv.nodes(dr("km3")).nodes(dr("km7")).Nodes.Add(dr("km7"))
Else
tv.nodes(dr("km3")).Nodes.Add(dr("km7"),dr("km4") & "-" & dr("km7"))
'tv.nodes(dr("km3")).nodes(dr("km7")).Nodes.Add(dr("km7"))
End If
Else
tv.Nodes.Add(dr("km7"),dr("km4") & "-" & dr("km7"))
'tv. nodes(dr("km7")).Nodes.Add(dr("km7"))
End If
End If
Next
For Each nd As WinForm.TreeNode In tv.AllNodes
For i As Integer = 1 To lst.Count - 1
If nd.Name.Length = lst(i) Then
For j As Integer = 0 To i - 1
nd.MoveRight
Next
End If
Next
Next
tv.Nodes.Insert("全部",0)
Dim btv = tv.basecontrol
btv.nodes(0).EnsureVisible
tv.SelectedNode = tv.Nodes(0)
tv.Select
tv.CollapseAll
tv.ResumeRedraw