Реализация папки дизайна ASP.NET на сетевом жестком диске
Автор:Eve Cole
Время обновления:2009-06-30 15:39:42
Как упоминалось при представлении понятия «сетевой жесткий диск», каждый пользователь имеет свое собственное место на «сетевом жестком диске». Вот как это реализовано в следующем дизайне программы: пользователю предоставляется фиксированная папка, в которой пользователь может добавлять/удалять новые папки или файлы. Как показано на рисунке 1, когда вы впервые открываете веб-страницу, будет отображено все содержимое папки (включая файлы и папки). Если вы хотите войти в папку следующего уровня, вы можете выбрать папку и нажать кнопку «Открыть», чтобы войти. Ниже пошагово будет описана реализация функции просмотра содержимого папки.
Рис. 1. Основной интерфейс пользователя. |
1. Загрузка страницы
Поскольку каталог пользователя, предоставляемый программой, фиксирован, например, c:UserDir, и все содержимое папки должно отображаться после загрузки страницы, соответствующие операции необходимо выполнить в Page_Load: сначала определите, существует ли папка , если нет. Если он существует, вам необходимо сначала его создать, а затем перечислить содержимое папки. Код реализован следующим образом:
частная пустота Page_Load (отправитель объекта, System.EventArgs e) { //Поместите сюда пользовательский код для инициализации страницы
если(Page.IsPostBack==false) { CurrentPath= @"c:UserDir"; //Установить текущий каталог if(Directory.Exists(@"c:UserDir")==false) //Если каталог не существует, создайте каталог. CreateDirectory( @"c:UserDir"); LoadDir(CurrentPath); //Инициализируем каталог загрузки} }
|
Метод LoadDir(string FullPath) используется для вывода списка всего содержимого папки. Код выглядит следующим образом:
частная пустота LoadDir (строка FullPath) { ТекущийПуть=ПолныйПуть; Значения ArrayList = новый ArrayList(); строка [] Мои файлы, MyDirs; MyFiles = Directory.GetFiles(FullPath); //Получить все файлы в каталоге if(CurrentPath!=@"c:UserDir") //Если это не верхний каталог, добавьте опцию «возврат в верхний каталог» { values.Add("Вернуться в каталог верхнего уровня"); }
Values.AddRange(MyFiles); //Добавляем файлы MyDirs= Directory.GetDirectories(FullPath); //Получаем все каталоги в этом каталоге. Values.AddRange(MyDirs); //Добавляем каталоги FileList.DataSource=values; FileList.DataBind(); //Привязываем данные } |
Сначала определите значения объекта массива ArrayList для хранения всего содержимого каталога верхнего уровня (включая имена папок и имена файлов). Метод Directory.GetFiles() возвращает все имена файлов в каталоге верхнего уровня. Его тип возвращаемого значения — массив строк, поэтому необходимо определить объект строкового класса MyFiles, чтобы сохранить возвращаемые имена файлов; Directory.GetDirectories() возвращает все; файлы в каталоге верхнего уровня, а также определите объект массива строк MyDirs для их сохранения. После этого в объект значений можно добавить массивы MyFiles и MyDirs. Последнее, что нужно сделать, — это добавить источник данных и привязать данные к объекту управления ListBox FileList. Необходимо пояснить одну вещь: если текущий каталог не является каталогом верхнего уровня, необходимо иметь возможность возврата в каталог верхнего уровня. Для этого нужно добавить «Возврат в каталог верхнего уровня». опция для FileList.
2. Многоуровневый просмотр каталога
С помощью двух фрагментов кода, перечисленных в предыдущем разделе, вы можете перечислить весь контент в каталоге верхнего уровня при загрузке страницы. Конечно, перечисления содержимого каталога верхнего уровня недостаточно. Как и в операционной системе Windows, каталоги папок на сетевом жестком диске также являются вложенными, и существует два или более уровней каталогов папок. Для этого необходимо выполнить некоторую соответствующую обработку, чтобы пользователи могли просматривать содержимое многоуровневых папок. В предыдущем дизайне интерфейса предусмотрена кнопка «Открыть». После того, как пользователь выберет соответствующую папку, нажмите кнопку, чтобы просмотреть содержимое папки.
Теперь добавьте код для кнопки «Открыть». Дважды нажмите кнопку на панели «Дизайн», и система автоматически добавит к ней событие. Содержимое кода следующее:
Private void btnOpen_Click (отправитель объекта, System.EventArgs e) { if(FileList.SelectedItem.Text=="Вернуться в каталог верхнего уровня") //Вернуться в каталог верхнего уровня{ строка ParentPath = Directory.GetParent(CurrentPath).ToString(); LoadDir(РодительскийПуть); возвращаться; } иначе //открыть каталог{ LoadDir(СписокФайлов.ВыбранныйЭлемент.Текст); } } |
Программа сначала определяет, выбрал ли пользователь «Вернуться в каталог верхнего уровня». Если это так, вы должны сначала вернуть имя папки верхнего уровня с помощью метода Directory.GetParent(), а затем вызвать метод LoadDir() для отображения содержимого каталога, если пользователь не выбирает «Вернуться на верхний уровень»; каталог", а не имя папки, вы можете напрямую вызвать метод LoadDir(). FileList.SelectedItem.Text — это выбранное имя папки, которое используется в качестве параметра метода LoadDir().