ASP.NET - Cargar subcarpetas al expandir Nodo de Treeview

 
Vista:

Cargar subcarpetas al expandir Nodo de Treeview

Publicado por Beto Salazar (4 intervenciones) el 25/06/2011 21:29:05
Hola que tal gente es mi "primera vez" en estas ondas de lawebdelprogramador mi motivo es que tengo un problema, quiero hacer un Tipo Arbol de Navegación con Treeview, y ya lo logre, mando llamar una ruta compartida ejemplo "\\servidor\CarpetaPrincipal" y todo va perfecto.
Lo que hice fue que a partir de esa ruta me muestre todas las carpetas que le siguen a la principal ejemplo:
Carpeta Principal
...CarpetaSecundaria
......CarpetaTerciaria
...CarpetaSecundaria

Etc.
El problema viene cuando esa carpeta que es principal contiene una enormidad de subcarpetas y esta a su vez mas subcarpetas, lo cual al abrir la pagina lo hace totalmente lento, a tal punto que puede durar 30 seg a 1 min en cargar, o mostrarme un error de Tiempo excedido, debido a esto se me ocurrió una solución mas no he logrado encontrar como hacerlo.
Quiero que en mi treeview aparezcan solo las primeras subcarpetas de la ruta principal, y solo si doy clic en una subcarpeta esta cargue las subcarpetas que le siguen, y asi se vaya cargando en cuanto doy clic y no todas de un "Jalón" mas no se como hacer esto.

Espero me haya explicado y pueda alguien darme un enpujonsito que nomas no doy con la solución a esta lentitud de cargar todo desde el principio.

Codigo ejemplo:
en Page_Load:

If Not Page.IsPostBack Then
Dim rootDir As New DirectoryInfo(folderToBrowse) 'folderToBrowse es mi ruta ejemplo "\\servidor\CarpetaPrincipal"
Dim RootNode As TreeNode = RecurseNodes(rootDir)
Treeview1.Nodes.Add(RootNode)
End If

'Mi función de recursividad lo cual hace que sea lenta la carga del treeview porque esta cragando todo
Private Function RecurseNodes(ByVal thisDir As DirectoryInfo) As TreeNode
Dim thisDirNode As New TreeNode(thisDir.Name, Nothing, "imagenes/folder.png")
' Obtenemos todos los subdirectorios de los directorios
Dim subDirs As DirectoryInfo() = thisDir.GetDirectories
For Each subDir As DirectoryInfo In subDirs
thisDirNode.ChildNodes.Add(RecurseNodes(subDir)) 'Lo metemos a sus Nodos
Next
Return thisDirNode
End Function

Gracias de Antemano... y como veran esta en asp.net codigo VB.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de roger

Cargar subcarpetas al expandir Nodo de Treeview

Publicado por roger (311 intervenciones) el 27/06/2011 05:17:06
en algun momento tuve un problema de ese tipo , lo solucioné con la propiedad populateOnDemand y controlando el evento para cargar los datos sobre demanda
http://212.40.172.33/WebAppCodeGod/TreeView-ASP-NET-Populate-OnDemand-AID409.aspx

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cargar subcarpetas al expandir Nodo de Treeview

Publicado por Beto Salazar (4 intervenciones) el 28/06/2011 19:00:40
Gracias por el tip estuve checando el codigo y de ahi me base para solucionar mi problema, y ya logre que la pagina se reduciera en carga en un 95%!!!!
Esto me aseguro un excelente trabajo y sobre todo buenas bases del cambio que estamos realizando, gracias por la ayuda. Si alguien tiene la misma bronca no dude en decirmelo y podria comentarles como lo logre :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cargar subcarpetas al expandir Nodo de Treeview

Publicado por kevin (1 intervención) el 30/07/2016 17:28:59
hola lo que no entiendo es que puse el código corre pero me lanza un error que dice acceso denegado porque sobrepasa el volumen del disco y eso que solo ando probando con mis discos duros me ayudan con esto por favor.
aquí les dejo el mismo codigo que esta arriba, como ya les dije solo cambie y use mi disco en la ruta.
Imports System.IO

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Public Class _Default
    Inherits System.Web.UI.Page
 
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not Page.IsPostBack Then
            Dim archivo As New DirectoryInfo("D:\") 'folderToBrowse es mi ruta ejemplo "\\servidor\CarpetaPrincipal"
            Dim RootNode As TreeNode = RecurseNodes(archivo)
            TreeView1.Nodes.Add(RootNode)
        End If
 
        'Mi función de recursividad lo cual hace que sea lenta la carga del treeview porque esta cragando todo
    End Sub
    Private Function RecurseNodes(ByVal thisDir As DirectoryInfo) As TreeNode
        Dim thisDirNode As New TreeNode(thisDir.Name, Nothing, "imagenes/folder.png")
        ' Obtenemos todos los subdirectorios de los directorios 
        Dim subDirs As DirectoryInfo() = thisDir.GetDirectories
        For Each subDir As DirectoryInfo In subDirs
            thisDirNode.ChildNodes.Add(RecurseNodes(subDir)) 'Lo metemos a sus Nodos
        Next
        Return thisDirNode
    End Function
 
End Class
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar