Traversing an arbitrarily deep hierarchical data structure.
Hmmmm....
This looks like a job for:
Recursion
The top level processing is essentially the same, except that after it
Add()
s a node, it calls a recursive function that deals with the direct children. In that function, when a node is
Add()
ed, the same function is called again to process
its children, etc.
(This is a "Depth-first tree traversal".)
==========
Something like this (I'm not a sophisticated VB dev. C# yes.):
Private Sub AddDescendents(ByVal nodes As TreeNodeCollection, ByVal data As DataTable, ByVal taskID as String)
For Each dr As DataRow in data.Select("ParentTaskID='" & taskID & "'")
Dim newNode As TreeNode
newNode = nodes.Add("Task: " & dr.Item("TaskName") & _
" - Task Type: " & dr.Item("TaskTypeName") & _
" - Owner: " & dr.Item("Name"))
AddDescendents(newNode.Nodes, data, dr.Item("JobTaskID"))
Next
End Sub
TasksHierarchy.BeginUpdate()
TasksHierarchy.Nodes.Clear()
Dim nodes As TreeNodeCollection = TasksHierarchy.Nodes
For Each dr As DataRow In DataSet1.DataTable1
If IsDBNull(dr.Item("ParentTaskID")) Then
Dim newNode As TreeNode
newNode = nodes.Add("Task: " & dr.Item("TaskName") & _
" - Task Type: " & dr.Item("TaskTypeName") & _
" - Owner: " & dr.Item("Name"))
AddDescendents(newNode.Nodes, DataSet1.DataTable1, dr.Item("JobTaskID"))
End If
Next
TasksHierarchy.EndUpdate()
(Some of the duplication could be consolidated if I knew VB better...)