Filtering data in TreeView

  • Thread starter Brian Nicholson
  • Start date

B

Brian Nicholson

Hello,

I've created a treeview control that gives a folder browser view of a given
computer. The treeview is populated using the following methods:


Protected Sub treeDst_Init(ByVal sender As Object, ByVal e As
System.EventArgs) Handles treeDst.Init
Dim dirInfo As New DirectoryInfo("C:\")
dstDir.Text = dirInfo.FullName
For Each dir As DirectoryInfo In dirInfo.GetDirectories()
Dim node As TreeNode = New TreeNode(dir.Name, dir.FullName)
node.Expanded = False
node.PopulateOnDemand = True
CType(sender, TreeView).Nodes.Add(node)
Next
End Sub

Protected Sub PopulateNode(ByVal sender As Object, ByVal e As
TreeNodeEventArgs) Handles treeSrc.TreeNodePopulate, treeDst.TreeNodePopulate
On Error Resume Next

Dim dirInfo As New DirectoryInfo(e.Node.Value)
For Each dir As DirectoryInfo In dirInfo.GetDirectories()
Dim node As TreeNode = New TreeNode(dir.Name, dir.FullName)
node.Expanded = False
node.PopulateOnDemand = True
e.Node.ChildNodes.Add(node)
Next
End Sub


What I'd like to be able to be able to do is figure out a (clean) way to
filter out the directories before adding them as nodes to the treeview. For
example, a few things I'd like to do is prevent some specified directories
from showing up entirely, or allow the user to only go a certain depth in
some specified directory. I realize I could code all of this logic directly
in the PopulateNode class, but I don't feel like it's very clean to hard code
a bunch of strings into my script. I was thinking I might somehow be able to
utilize an XML file, but I don't know how. Something along these lines,
perhaps:


<root>
<dir name="folder1" hidden="true" />
<dir name="folder2" maxDepth="3" />
<dir name="folder3">
<dir name="subFolder1" maxDepth="1" />
<dir name="subFolder2" hidden="true" />
</dir>
</root>


Would the best thing to do be to have some kind of filter method that goes
through the XML file and looks for the node to be added before adding it to
the treeview? Or am I taking the wrong approach to this?

Thank you for your time.
 
Ad

Advertisements


Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top