I have an array of paths separated by a delimiter:
Dim paths = New List(Of String)() From {
"C:\WINDOWS\AppPatch\MUI\040C",
"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727",
"C:\WINDOWS\Microsoft.NET\Framework\addins\MUI",
"C:\WINDOWS\addins",
"C:\WINDOWS\AppPatch",
"C:\WINDOWS\AppPatch\MUI",
"C:\WINDOWS\Microsoft.NET\Framework\MUI\MUI\0409"
}
And I want to create a RadTreeView that will look something like this:
+C:
+Windows
+AppPatch
+addins
+Microsoft.NET
+Framework
...
This is what I have managed to do until now but there's something I'm missing:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim paths = New List(Of String)() From {
"C:\WINDOWS\AppPatch\MUI\040C",
"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727",
"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MUI",
"C:\WINDOWS\addins",
"C:\WINDOWS\AppPatch",
"C:\WINDOWS\AppPatch\MUI",
"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MUI\0409"
}
If Not Page.IsPostBack Then
Dim subPathAgg As String
Dim pathSeparator As String = "\"
' For each complete individual path
For Each path As String In paths
subPathAgg = String.Empty
' Fill array of strings with each delimited part
Dim arrFolders As List(Of String) = (path).Split(pathSeparator).ToList
Dim lastNode As RadTreeNode = Nothing
Dim iCount As Integer = 0
'For each one of the folders
For Each folder As String In path.Split(pathSeparator)
subPathAgg += folder & pathSeparator
Dim foundNode As RadTreeNode = RadTreeView1.Nodes.FindNodeByValue(subPathAgg, True)
If foundNode Is Nothing Then
If lastNode Is Nothing Then
lastNode = New RadTreeNode(folder, subPathAgg)
RadTreeView1.Nodes.Add(lastNode)
Else
Dim otherNode = New RadTreeNode(folder, subPathAgg)
lastNode.Nodes.Add(otherNode)
lastNode = otherNode
End If
Else
If foundNode.Text <> folder Then
Dim otherNode = New RadTreeNode(folder, subPathAgg)
foundNode.Nodes.Add(otherNode)
lastNode = otherNode
End If
End If
Next
lastNode = Nothing
Next
End If
End Sub
I managed to find the solution on the Telerik forums:
C#
VB.NET: