2009-05-25 21 views
2

Es wurde begonnen, das Treeview-Steuerelement zu betrachten.Verzeichnisstruktur innerhalb von TreeView VB

Gibt es sowieso, das Tree View-Steuerelement in eine Verzeichnisstruktur auf dem Webserver mit Visual Basic zu binden?

Ich habe viele Legacy-Dateien, die oft aktualisiert und hinzugefügt werden. Natürlich könnte ich die Struktur in XML codieren, aber das wäre mühsam und schwer für den Endbenutzer zu trainieren.

Ich denke, es wäre vielleicht eine dynamische Erstellung einer XML-Datei?

Antwort

3

Hier ist ein elementares Beispiel, das ich vor einer Weile erstellt, wenn das Lernen mit dem TreeView zu spielen. Ich habe jetzt den Code in VB.NET mit einem online converter zu Ihrem Vorteil konvertiert.

Es durchläuft den Verzeichnisbaum rekursiv, beginnend mit dem Stammverzeichnis des virtuellen Verzeichnisses, und erstellt Knoten für jedes gefundene Unterverzeichnis oder jede Datei. Ich denke, das ist genau das, was du brauchst.

Für die visuelle Trennung habe ich Symbole verwendet, um Dateien von Ordnern (folder.gif und file.gif) zu unterscheiden. Sie können diesen Parameter entfernen, wenn Sie möchten.

komplette ASPX folgt (Sie können sie in eine neue Seite einfügen und es sollte laufen):


<%@ Page Language="VB" %> 
<%@ Import Namespace="System.IO" %> 

<script runat="server"> 
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) 
    If Not Page.IsPostBack Then 
     Dim rootDir As New DirectoryInfo(Server.MapPath("~/")) 

     ' Enter the RecurseNodes function to recursively walk the directory tree. 
     Dim RootNode As TreeNode = RecurseNodes(rootDir) 

     ' Add this Node hierarchy to the TreeNode control. 
     Treeview1.Nodes.Add(RootNode) 
    End If 
    End Sub 

    Private Function RecurseNodes(ByVal thisDir As DirectoryInfo) As TreeNode 
    Dim thisDirNode As New TreeNode(thisDir.Name, Nothing, "Images/folder.gif") 

    ' Get all the subdirectories in this Directory. 
    Dim subDirs As DirectoryInfo() = thisDir.GetDirectories() 
    For Each subDir As DirectoryInfo In subDirs 
     thisDirNode.ChildNodes.Add(RecurseNodes(subDir)) 
    Next 

    ' Now get the files in this Directory. 
    Dim files As FileInfo() = thisDir.GetFiles() 
    For Each file As FileInfo In files 
     Dim thisFileNode As New TreeNode(file.Name, Nothing, "Images/file.gif") 
     thisDirNode.ChildNodes.Add(thisFileNode) 
    Next 

    Return thisDirNode 
    End Function 
</script> 

<html> 
<head> 
    <title>Untitled Page</title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <asp:treeview ID="Treeview1" runat="server"></asp:treeview> 
    </form> 
</body> 
</html> 
+0

Sir, Dies ist erstaunlich, und so einfach. Vielen vielen Dank –

+0

Es ist mir eine Freude und Sie sind herzlich willkommen. :-) – Cerebrus

2

Ein benutzerdefinierter Sitemap-Anbieter ist eine gute Wette.

Es ist ein guter Artikel auf 4guys Titeln „Prüfung der ASP.NET 2.0 der Site-Navigation - Teil 4“