Treeview traversal and recursion
In Rest Results Explorer i showed how to Create a treeview from json using the treeView control. Objects like the treeview are generally dealt with recursively – see Getting started with recursion and Getting to Grips with recursion for more detail on this simple yet elusive technique. Here I will show how to traverse a treeview in just a few lines of code.
This example will use the treeview implemented in Rest Results Explorer , and select or un-select branches of data returned by a tweetsentiment query to the Rest Results Explorer. In the example, i have checked trends (and need all children to be checked), but have unchecked description, and similarly I would expect the children of description to become unchecked.
All that is required is to deal with the nodeCheck event, and pass through the state of the checked box to each of the nodes’ children, which recursively call their children to pass on the status of the parents’ check box. This is all there is to it.
Private Sub trcJobject_NodeCheck(ByVal node As MSComctlLib.node) ' if we get here then a check has been set on on or off.. ' all the children need to inherit this grantParentNodeCheck node, node.Checked End Sub Private Sub grantParentNodeCheck(parent As MSComctlLib.node, _ Optional check As Boolean = True) Dim child As MSComctlLib.node parent.Checked = check Set child = parent.child While Not child Is Nothing grantParentNodeCheck child, check Set child = child.Next Wend End Sub