DotNet Tutorials

V4 Dot Net Tutorials

Server Intellect Cloud Hosting

 Populate a treeview node on the client using VB

This example illustrates TreeView how to populate a node on the client using ASP.NET 2.0 and VB.NET. This example illustrates TreeView how to populate a node on the client  using ASP.NET 2.0 and C#.NET. First, you will need to import the using System.IO namespace.
Imports System.IO

Need help with Windows Dedicated Hosting? Try Server Intellect. I'm a happy customer!

We use the DirectoryInfo class for typical operations such as copying, moving, renaming, creating, and deleting directories. We then call the GetDirectories to returns the subdirectories of the current directory. Then we use the Treeview1_TreeNodePopulate event to do the work. Sometimes, it is not practical to statically predefine the tree structure due to data size or custom content that depends on user input. Because of this, the TreeView control supports dynamic node population. When a node's PopulateOnDemand property is set to true, that node is populated at run time through a postback event when the node is expanded. To populate a node dynamically, an event-handling method that populates the node must be defined for the TreeNodePopulate event. Supported browsers can also take advantage of client-side node population. When enabled, this allows the TreeView control to dynamically populate a node on the client when that node is expanded, which prevents the need to post back to the server.

Partial Class TreeViewnorefreshVB
Inherits System.Web.UI.Page

Protected Sub Treeview1_TreeNodePopulate(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.TreeNodeEventArgs) Handles Treeview1.TreeNodePopulate
If IsCallback Then
If (e.Node.ChildNodes.Count = 0) Then
LoadChildNode(e.Node)
End If
End If
End Sub

Protected Sub LoadChildNode(ByVal node As TreeNode)
Dim directory As New DirectoryInfo(node.Value)
Dim s As DirectoryInfo
Dim fi As FileInfo

For Each s In directory.GetDirectories()
Dim subNode As New TreeNode(s.Name)
subNode.Value = s.FullName
Try
If s.GetDirectories().Length > 0 Or s.GetFiles().Length > 0 Then
subNode.SelectAction = TreeNodeSelectAction.SelectExpand
subNode.PopulateOnDemand = True
subNode.NavigateUrl = "#"
End If
Catch
subNode.ImageUrl = "WebResource.axd?amp;a=s&r=TreeView_XP_Explorer_ParentNode.gif&t=632242003305625000"
node.ChildNodes.Add(subNode)
End Try
Next
For Each fi In directory.GetFiles()
Dim subNode As New TreeNode(fi.Name)
node.ChildNodes.Add(subNode)
Next
End Sub
End Class

The front end Default.aspx page looks something like this:

<asp:treeview ID="Treeview1" runat="server" ImageSet="XPFileExplorer" AutoGenerateDataBindings="false" ExpandDepth=0 OnTreeNodePopulate="Treeview1_TreeNodePopulate">
<SelectedNodeStyle BackColor="#B5B5B5"></SelectedNodeStyle>
<Nodes>
<asp:TreeNode Value="D:" Text="D:" PopulateOnDemand="true" SelectAction="Select" NavigateUrl="#" >
</asp:TreeNode>
</Nodes>
<NodeStyle VerticalPadding="2" Font-Names="Tahoma" Font-Size="8pt" HorizontalPadding="2" ForeColor="Black"></NodeStyle>
<HoverNodeStyle Font-Underline="True" ForeColor="#6666AA"></HoverNodeStyle>
</asp:treeview>

The flow for the code behind page is as follows.

Imports System.IO

Partial Class TreeViewnorefreshVB
Inherits System.Web.UI.Page

Protected Sub Treeview1_TreeNodePopulate(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.TreeNodeEventArgs) Handles Treeview1.TreeNodePopulate
If IsCallback Then
If (e.Node.ChildNodes.Count = 0) Then
LoadChildNode(e.Node)
End If
End If
End Sub

Protected Sub LoadChildNode(ByVal node As TreeNode)
Dim directory As New DirectoryInfo(node.Value)
Dim s As DirectoryInfo
Dim fi As FileInfo
For Each s In directory.GetDirectories()
Dim subNode As New TreeNode(s.Name)
subNode.Value = s.FullName
Try
If s.GetDirectories().Length > 0 Or s.GetFiles().Length > 0 Then
subNode.SelectAction = TreeNodeSelectAction.SelectExpand
subNode.PopulateOnDemand = True
subNode.NavigateUrl = "#"
End If
Catch
subNode.ImageUrl = "WebResource.axd?a=s&r=TreeView_XP_Explorer_ParentNode.gif&ampt=632242003305625000"
node.ChildNodes.Add(subNode)
End Try
Next
For Each fi In directory.GetFiles()
Dim subNode As New TreeNode(fi.Name)
node.ChildNodes.Add(subNode)
Next
End Sub
End Class

I just signed up at Server Intellect and couldn't be more pleased with my Windows Server! Check it out and see for yourself.




Looking for the C# 2005 Version? Click Here!

Looking for more ASP.NET Tutorials? Click Here!

Download Project Source - Enter your Email to be emailed a link to download the Full Source Project used in this Tutorial!



100% SPAM FREE! We will never sell or rent your email address!