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.
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


0