I have tried everything now. I have about 6 levels deep of employees, and I had to actually embed code much like a recursive function. I have tried tons of different things. I used enumerators, but they only enumerated throught the first level of nodes. I used the enumerators with the nodes collection, but apparently a node collection doesn't actually contain all of the nodes in the entire tree, and the first level of nodes. This control is very difficult for me and I just don't understand why. My situation again was that I have one data table that has all of my employees, the table also has the managers employee key, and I'm trying to show this hierarchy in a treeview.
EmpPK MgrsEmpFK
110 112
This would should that employee 110's manager is employee 112, I know everyone is familiar with the setup. Well this is the crappy code that I wrote, and it only worked because I knew how many levels I had nested, but its still very sloppy code, can anyone help?
Private Sub FillTree()
Dim i, j, k, l, m, n, o As Integer
Dim aNode, bNode, cNode, dNode, eNode, fNode, gNode As TreeNode
aNode = tvEmployeeTree.TopNode()
For i = 0 To intRows - 1
If (dsResults.Tables("Employees").Rows(i).Item("MgrEmpFK").ToString = aNode.Tag.ToString) Then
Dim nTreeNode As New TreeNode
nTreeNode.Tag = dsResults.Tables("Employees").Rows(i).Item("EmpFK")
nTreeNode.Text = dsResults.Tables("Employees").Rows(i).Item("Emp_No") & " - " & dsResults.Tables("Employees").Rows(i).Item("EmpFullName1")
dsResults.Tables("Employees").Rows(i).Item("MgrEmpFK") = 0
aNode.Nodes.Add(nTreeNode)
intNodesAdded += 1
End If
Next
For Each bNode In aNode.Nodes()
For j = 0 To intRows - 1
If (dsResults.Tables("Employees").Rows(j).Item("MgrEmpFK").ToString = bNode.Tag.ToString) Then
Dim nTreeNode As New TreeNode
nTreeNode.Tag = dsResults.Tables("Employees").Rows(j).Item("EmpFK")
nTreeNode.Text = dsResults.Tables("Employees").Rows(j).Item("Emp_No") & " - " & dsResults.Tables("Employees").Rows(j).Item("EmpFullName1")
dsResults.Tables("Employees").Rows(j).Item("MgrEmpFK") = 0
bNode.Nodes.Add(nTreeNode)
intNodesAdded += 1
End If
Next
For Each cNode In bNode.Nodes()
For k = 0 To intRows - 1
If (dsResults.Tables("Employees").Rows(k).Item("MgrEmpFK").ToString = cNode.Tag.ToString) Then
Dim nTreeNode As New TreeNode
nTreeNode.Tag = dsResults.Tables("Employees").Rows(k).Item("EmpFK")
nTreeNode.Text = dsResults.Tables("Employees").Rows(k).Item("Emp_No") & " - " & dsResults.Tables("Employees").Rows(k).Item("EmpFullName1")
dsResults.Tables("Employees").Rows(k).Item("MgrEmpFK") = 0
cNode.Nodes.Add(nTreeNode)
intNodesAdded += 1
End If
Next
For Each dNode In cNode.Nodes()
For l = 0 To intRows - 1
If (dsResults.Tables("Employees").Rows(l).Item("MgrEmpFK").ToString = dNode.Tag.ToString) Then
Dim nTreeNode As New TreeNode
nTreeNode.Tag = dsResults.Tables("Employees").Rows(l).Item("EmpFK")
nTreeNode.Text = dsResults.Tables("Employees").Rows(l).Item("Emp_No") & " - " & dsResults.Tables("Employees").Rows(l).Item("EmpFullName1")
dsResults.Tables("Employees").Rows(l).Item("MgrEmpFK") = 0
dNode.Nodes.Add(nTreeNode)
intNodesAdded += 1
End If
Next
For Each eNode In dNode.Nodes()
For m = 0 To intRows - 1
If (dsResults.Tables("Employees").Rows(m).Item("MgrEmpFK").ToString = eNode.Tag.ToString) Then
Dim nTreeNode As New TreeNode
nTreeNode.Tag = dsResults.Tables("Employees").Rows(m).Item("EmpFK")
nTreeNode.Text = dsResults.Tables("Employees").Rows(m).Item("Emp_No") & " - " & dsResults.Tables("Employees").Rows(m).Item("EmpFullName1")
dsResults.Tables("Employees").Rows(m).Item("MgrEmpFK") = 0
eNode.Nodes.Add(nTreeNode)
intNodesAdded += 1
End If
Next
For Each fNode In eNode.Nodes()
For n = 0 To intRows - 1
If (dsResults.Tables("Employees").Rows

.Item("MgrEmpFK").ToString = fNode.Tag.ToString) Then
Dim nTreeNode As New TreeNode
nTreeNode.Tag = dsResults.Tables("Employees").Rows

.Item("EmpFK")
nTreeNode.Text = dsResults.Tables("Employees").Rows

.Item("Emp_No") & " - " & dsResults.Tables("Employees").Rows

.Item("EmpFullName1")
dsResults.Tables("Employees").Rows

.Item("MgrEmpFK") = 0
fNode.Nodes.Add(nTreeNode)
intNodesAdded += 1
End If
Next
For Each gNode In fNode.Nodes()
For o = 0 To intRows - 1
If (dsResults.Tables("Employees").Rows(o).Item("MgrEmpFK").ToString = gNode.Tag.ToString) Then
Dim nTreeNode As New TreeNode
nTreeNode.Tag = dsResults.Tables("Employees").Rows(o).Item("EmpFK")
nTreeNode.Text = dsResults.Tables("Employees").Rows(o).Item("Emp_No") & " - " & dsResults.Tables("Employees").Rows(o).Item("EmpFullName1")
dsResults.Tables("Employees").Rows(o).Item("MgrEmpFK") = 0
gNode.Nodes.Add(nTreeNode)
intNodesAdded += 1
End If
Next
Next
Next
Next
Next
Next
Next
End Sub
This is terrible. The first part I just add the root node because I know exactly who it is, but then I loop through to add everyone of the additional employees under them. Sorry to all, this is just killing me. I've spent hours on this and can't figure it out. By the way, even after the tree is populated TreeView.Nodes.Count returns only the top level nodes, I'm really confused. Thanks again!