2009-05-25 5 views
2

Commencé à regarder le contrôle Treeview.Structure de répertoire dans TreeView VB

Est-il possible de lier le contrôle Tree View dans une structure Directory sur le serveur Web avec Visual Basic? J'ai beaucoup de fichiers hérités, qui sont mis à jour et ajoutés souvent. Évidemment, je pourrais coder la structure en XML, mais cela serait laborieux et difficile à former pour l'utilisateur final.

Je suppose que ce serait une création dynamique d'un fichier XML peut-être?

Répondre

3

Voici un exemple élémentaire que j'ai créé il y a un certain temps pour apprendre à jouer avec le TreeView. J'ai maintenant converti le code en VB.NET en utilisant un online converter pour votre avantage.

Il parcourt récursivement l'arborescence de répertoires à partir de la racine du répertoire virtuel et crée des nœuds pour chaque sous-répertoire ou fichier rencontré. Je pense que c'est exactement ce dont vous aviez besoin. Pour la séparation visuelle, j'avais utilisé des icônes pour différencier les fichiers des dossiers (folder.gif et file.gif). Vous pouvez supprimer ce paramètre si vous le souhaitez.

complet ASPX suit (Vous pouvez le coller dans une nouvelle page et il devrait fonctionner):


<%@ 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

Monsieur, C'est incroyable, et si simple. Beaucoup de mercis –

+0

C'est mon plaisir et vous êtes les bienvenus. :-) – Cerebrus

2

Un fournisseur de sitemap personnalisé est un bon pari.

Il y a un bon article sur 4guys titre « examen de navigation du site de ASP.NET 2.0 - Partie 4 »

Questions connexes