네트워크 하드 드라이브의 ASP.NET 디자인 폴더 구현
저자:Eve Cole
업데이트 시간:2009-06-30 15:39:42
"네트워크 하드 드라이브"라는 개념을 소개할 때 언급했듯이 각 사용자는 "네트워크 하드 드라이브"에서 자신만의 공간을 갖습니다. 이것이 다음 프로그램 설계에서 처리되는 방식입니다. 사용자가 새 폴더나 파일을 추가/삭제할 수 있는 고정 폴더가 사용자에게 제공됩니다. 그림 1과 같이 웹 페이지를 처음 열면 폴더 아래의 모든 내용(파일 및 폴더 포함)이 나열됩니다. 다음 단계 폴더로 들어가고 싶다면 해당 폴더를 선택하고 "열기" 버튼을 눌러 들어가시면 됩니다. 폴더 내용 보기 기능의 구현은 아래에서 단계별로 설명됩니다.
그림 1 사용자 기본 인터페이스 |
1. 페이지 로딩
프로그램에서 제공하는 사용자 디렉토리는 c:UserDir과 같이 고정되어 있고 페이지가 로드된 후 폴더의 모든 내용이 표시되어야 하므로 Page_Load에서 해당 작업을 수행해야 합니다. 먼저 폴더가 존재하는지 확인합니다. , 존재하지 않는 경우 먼저 생성한 후 폴더 아래에 내용을 나열해야 합니다. 코드는 다음과 같이 구현됩니다.
개인 무효 Page_Load(개체 전송자, System.EventArgs e) { //페이지를 초기화하려면 여기에 사용자 코드를 입력하세요.
if(Page.IsPostBack==false) { CurrentPath= @"c:UserDir"; //현재 디렉터리를 설정합니다. if(Directory.Exists(@"c:UserDir")==false) //디렉토리가 없으면 디렉터리를 생성합니다. CreateDirectory( @"c:UserDir"); LoadDir(CurrentPath); //로딩 디렉터리 초기화} }
|
LoadDir(string FullPath) 메서드는 폴더의 모든 내용을 나열하는 데 사용됩니다. 코드는 다음과 같습니다.
개인 무효 LoadDir(문자열 FullPath) { 현재 경로=전체 경로; ArrayList 값 = new ArrayList(); 문자열 [] MyFiles,MyDirs; MyFiles = Directory.GetFiles(FullPath); //디렉터리의 모든 파일을 가져옵니다. if(CurrentPath!=@"c:UserDir") //최상위 디렉터리가 아닌 경우 "상위 디렉터리로 돌아가기" 옵션을 추가합니다. { value.Add("상위 디렉터리로 돌아갑니다."); }
value.AddRange(MyFiles); //파일 추가 MyDirs= Directory.GetDirectories(FullPath); //이 디렉터리의 모든 디렉터리 가져오기 value.AddRange(MyDirs); //디렉터리 추가 FileList.DataSource=values; FileList.DataBind(); //데이터 바인딩 } |
먼저, 최상위 디렉토리의 모든 내용(폴더 이름 및 파일 이름 포함)을 저장하기 위해 ArrayList 배열 객체 값을 정의합니다. Directory.GetFiles() 메서드는 최상위 디렉터리의 모든 파일 이름을 반환합니다. 반환 유형은 문자열 배열이므로 반환된 파일 이름을 저장하려면 문자열 클래스 개체 MyFiles를 정의해야 합니다. 최상위 디렉토리에 있는 파일. 폴더 이름도 문자열 배열 객체 MyDirs를 정의하여 저장합니다. 이 작업을 완료한 후 MyFiles 및 MyDirs 배열을 값 개체에 추가할 수 있습니다. 마지막으로 해야 할 일은 데이터 소스를 추가하고 데이터를 ListBox 컨트롤 개체 FileList에 바인딩하는 것입니다. 한 가지 설명이 필요합니다. 현재 디렉터리가 최상위 디렉터리가 아닌 경우 상위 디렉터리로 돌아갈 수 있어야 합니다. 이렇게 하려면 "상위 디렉터리로 돌아가기"를 추가해야 합니다. FileList에 대한 옵션입니다.
2. 다단계 디렉토리 보기
이전 섹션에 나열된 두 가지 코드를 사용하면 페이지가 로드될 때 최상위 디렉터리의 모든 콘텐츠를 나열할 수 있습니다. 물론 최상위 디렉토리의 내용을 나열하는 것만으로는 충분하지 않습니다. Windows 운영 체제와 마찬가지로 네트워크 하드 디스크의 폴더 디렉토리도 중첩되어 있으며 두 개 이상의 폴더 디렉토리가 있습니다. 이를 위해서는 사용자가 다중 레벨 폴더의 내용을 볼 수 있도록 일부 해당 처리가 수행되어야 합니다. 이전 인터페이스 디자인에서는 사용자가 해당 폴더를 선택한 후 해당 버튼을 클릭하면 해당 폴더의 내용을 볼 수 있습니다.
이제 "열기" 버튼에 대한 코드를 추가하세요. "디자인" 패널에서 버튼을 두 번 클릭하면 시스템이 자동으로 이벤트를 추가합니다. 코드 내용은 다음과 같습니다.
개인 무효 btnOpen_Click(개체 전송자, System.EventArgs e) { if(FileList.SelectedItem.Text=="상위 디렉터리로 복귀") //상위 디렉터리로 복귀{ string ParentPath=Directory.GetParent(CurrentPath).ToString(); LoadDir(부모 경로); 반품; } else //디렉토리 열기{ LoadDir(FileList.SelectedItem.Text); } } |
프로그램은 먼저 사용자가 "상위 디렉터리로 돌아가기"를 선택했는지 여부를 확인합니다. 그렇다면 먼저 Directory.GetParent() 메서드를 통해 상위 폴더 이름을 반환한 다음, 사용자가 "상위 폴더로 돌아가기"를 선택하지 않은 경우 LoadDir() 메서드를 호출하여 디렉터리의 내용을 표시해야 합니다. "directory"가 아니라 폴더 이름인 경우 LoadDir() 메서드를 직접 호출할 수 있습니다. FileList.SelectedItem.Text는 선택된 폴더 이름으로 LoadDir() 메서드의 매개 변수로 사용됩니다.