Структура каталогов внутри TreeView VB - PullRequest
2 голосов
/ 25 мая 2009

Начал смотреть на элемент управления Treeview.

Есть ли способ связать элемент управления Tree View в структуре каталогов на веб-сервере с использованием Visual Basic?

У меня много устаревших файлов, которые часто обновляются и добавляются. Очевидно, я мог бы кодировать структуру в XML, но это было бы трудоемким и трудным для обучения конечному пользователю.

Полагаю, это будет динамическое создание файла XML, возможно?

Ответы [ 2 ]

4 голосов
/ 25 мая 2009

Вот элементарный пример, который я создал некоторое время назад, когда учился играть с TreeView. Теперь я преобразовал код в VB.NET, используя онлайн-конвертер для вашего удобства.

Он рекурсивно обходит дерево каталогов, начиная с корня виртуального каталога, и создает узлы для каждого обнаруженного подкаталога или файла. Я думаю, что это именно то, что вам нужно.

Для визуального разделения я использовал значки, чтобы отличать файлы от папок (folder.gif и file.gif). Вы можете удалить этот параметр, если хотите.

Далее следует полный ASPX (вы можете вставить его на новую страницу, и он должен запуститься):


<%@ 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>
2 голосов
/ 25 мая 2009

Хорошая ставка - пользовательский провайдер карты сайта.

Есть хорошая статья на 4guys под заголовком "Изучение навигации по сайту в ASP.NET 2.0 - часть 4"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...