Implementación de carpeta de diseño ASP.NET del disco duro de red
Autor:Eve Cole
Fecha de actualización:2009-06-30 15:39:42
Como se mencionó al presentar el concepto de "disco duro de red", cada usuario tiene su propio espacio en el "disco duro de red". Así es como se maneja en el siguiente diseño del programa: se proporciona una carpeta fija para el usuario, bajo la cual el usuario puede agregar/eliminar nuevas carpetas o archivos. Como se muestra en la Figura 1, cuando abra la página web por primera vez, se enumerarán todos los contenidos de la carpeta (incluidos archivos y carpetas). Si desea ingresar a la carpeta del siguiente nivel, puede seleccionar la carpeta y hacer clic en el botón "Abrir" para ingresar. La implementación de la función de ver el contenido de la carpeta se explicará paso a paso a continuación.
Figura 1 Interfaz principal de usuario |
1. Carga de página
Dado que el directorio de usuario proporcionado por el programa es fijo, como c: UserDir, y todo el contenido de la carpeta debe mostrarse después de cargar la página, se deben realizar las operaciones correspondientes en Page_Load: primero determine si la carpeta existe Si no existe, primero debe crearlo y luego enumerar el contenido en la carpeta. El código se implementa de la siguiente manera:
Page_Load vacío privado (remitente del objeto, System.EventArgs e) { //Pon el código de usuario aquí para inicializar la página
si(Page.IsPostBack==falso) { CurrentPath= @"c:UserDir"; //Establece el directorio actual if(Directory.Exists(@"c:UserDir")==false) //Si el directorio no existe, crea el directorio Directorio. CrearDirectorio( @"c:UserDir"); LoadDir(CurrentPath); //Inicializa el directorio de carga} }
|
El método LoadDir (cadena FullPath) se utiliza para enumerar todos los contenidos de la carpeta. El código es el siguiente:
LoadDir vacío privado (cadena FullPath) { RutaActual=RutaCompleta; Valores de ArrayList = nueva ArrayList(); cadena [] MisArchivos, MisDirs; MyFiles = Directory.GetFiles(FullPath); //Obtiene todos los archivos en el directorio if(CurrentPath!=@"c:UserDir") //Si no es el directorio superior, agregue la opción "volver al directorio superior" { valores.Add("Volver al directorio superior"); }
value.AddRange(MyFiles); //Agregar archivos MyDirs= Directory.GetDirectories(FullPath); //Obtener todos los directorios en este directorio value.AddRange(MyDirs); //Agregar directorios FileList.DataSource=values; FileList.DataBind(); //Enlazar datos } |
Primero, defina los valores del objeto de matriz ArrayList para almacenar todo el contenido del directorio de nivel superior (incluidos los nombres de carpetas y archivos). El método Directory.GetFiles() devuelve todos los nombres de archivos en el directorio de nivel superior. Su tipo de retorno es una matriz de cadenas, por lo que es necesario definir un objeto de clase de cadena MyFiles para guardar los nombres de archivos devueltos. archivos en el directorio de nivel superior Nombres de carpetas, también defina un objeto de matriz de cadenas MyDirs para guardarlos. Después de completar esto, puede agregar las matrices MyFiles y MyDirs al objeto de valores. Lo último que debe hacer es agregar una fuente de datos y vincular los datos al objeto de control ListBox FileList. Es necesario explicar una cosa: si el directorio actual no es el directorio de nivel superior, debe poder regresar al directorio de nivel superior. Para hacer esto, debe agregar "Regresar al directorio de nivel superior". opción a FileList.
2. Visualización de directorios multinivel
Con los dos fragmentos de código enumerados en la sección anterior, puede enumerar todo el contenido en el directorio de nivel superior cuando se carga la página. Por supuesto, enumerar el contenido del directorio de nivel superior no es suficiente. Al igual que en el sistema operativo Windows, los directorios de carpetas en el disco duro de la red también están anidados y hay dos o más niveles de directorios de carpetas. Para ello, se debe realizar algún procesamiento correspondiente para que los usuarios puedan ver el contenido de las carpetas de varios niveles. El diseño de interfaz anterior proporciona un botón "Abrir". Después de que el usuario selecciona la carpeta correspondiente, haga clic en el botón para ver el contenido de la carpeta.
Ahora agregue el código para el botón "Abrir". Haga doble clic en el botón en el panel "Diseño" y el sistema le agregará automáticamente un evento. El contenido del código es el siguiente:
btnOpen_Click vacío privado (remitente del objeto, System.EventArgs e) { if(FileList.SelectedItem.Text=="Regresar al directorio de nivel superior") //Regresar al directorio de nivel superior{ cadena ParentPath=Directory.GetParent(CurrentPath).ToString(); LoadDir(RutaPadre); devolver; } else //abrir directorio{ LoadDir(FileList.SelectedItem.Text); } } |
El programa primero determina si el usuario seleccionó "Volver al directorio superior". Si es así, primero debe devolver el nombre de la carpeta de nivel superior a través del método Directory.GetParent() y luego llamar al método LoadDir() para mostrar el contenido del directorio si el usuario no selecciona "Regresar al nivel superior; directorio" sino un nombre de carpeta, puede llamar directamente al método LoadDir(). FileList.SelectedItem.Text es el nombre de la carpeta seleccionada, que se utiliza como parámetro del método LoadDir().