Implementierung des ASP.NET-Entwurfsordners für eine Netzwerkfestplatte
Autor:Eve Cole
Aktualisierungszeit:2009-06-30 15:39:42
Wie bei der Einführung des Konzepts der „Netzwerkfestplatte“ erwähnt, verfügt jeder Benutzer über seinen eigenen Speicherplatz auf der „Netzwerkfestplatte“. Im folgenden Programmaufbau wird es so gehandhabt: Für den Benutzer wird ein fester Ordner bereitgestellt, unter dem der Benutzer neue Ordner oder Dateien hinzufügen/löschen kann. Wie in Abbildung 1 dargestellt, werden beim ersten Öffnen der Webseite alle Inhalte im Ordner (einschließlich Dateien und Ordner) aufgelistet. Wenn Sie den Ordner der nächsten Ebene öffnen möchten, können Sie den Ordner auswählen und zum Aufrufen auf die Schaltfläche „Öffnen“ klicken. Die Umsetzung der Funktion zum Anzeigen von Ordnerinhalten wird im Folgenden Schritt für Schritt erklärt.
Abbildung 1: Hauptbenutzeroberfläche |
1. Laden der Seite
Da das vom Programm bereitgestellte Benutzerverzeichnis festgelegt ist, z. B. c:UserDir, und der gesamte Inhalt des Ordners nach dem Laden der Seite angezeigt werden muss, müssen in Page_Load entsprechende Vorgänge ausgeführt werden: Stellen Sie zunächst fest, ob der Ordner vorhanden ist , wenn nicht, müssen Sie es zuerst erstellen; dann den Inhalt unter dem Ordner auflisten. Der Code wird wie folgt implementiert:
private void Page_Load(object sender, System.EventArgs e) { //Geben Sie hier den Benutzercode ein, um die Seite zu initialisieren
if(Page.IsPostBack==false) { CurrentPath= @"c:UserDir"; //Das aktuelle Verzeichnis festlegen if(Directory.Exists(@"c:UserDir")==false) //Wenn das Verzeichnis nicht existiert, erstellen Sie das Verzeichnis Directory. CreateDirectory( @"c:UserDir"); LoadDir(CurrentPath); //Ladeverzeichnis initialisieren} }
|
Die Methode LoadDir(string FullPath) wird verwendet, um alle Inhalte im Ordner aufzulisten. Der Code lautet wie folgt:
private void LoadDir(string FullPath) { CurrentPath=FullPath; ArrayList-Werte = new ArrayList(); string [] MyFiles,MyDirs; MyFiles = Directory.GetFiles(FullPath); //Alle Dateien im Verzeichnis abrufen if(CurrentPath!=@"c:UserDir") //Wenn es nicht das oberste Verzeichnis ist, fügen Sie die Option „Zurück zum oberen Verzeichnis“ hinzu { Values.Add("Zurück zum oberen Verzeichnis"); }
value.AddRange(MyFiles); //Dateien hinzufügen MyDirs= Directory.GetDirectories(FullPath); //Alle Verzeichnisse in diesem Verzeichnis abrufen. //Verzeichnisse hinzufügen FileList.DataSource=values; FileList.DataBind(); //Daten binden } |
Definieren Sie zunächst ein ArrayList-Array-Objekt mit Werten, um den gesamten Inhalt des Verzeichnisses der obersten Ebene (einschließlich Ordnernamen und Dateinamen) zu speichern. Die Methode Directory.GetFiles() gibt alle Dateinamen im Verzeichnis der obersten Ebene zurück. Ihr Rückgabetyp ist ein String-Array, daher muss ein String-Klassenobjekt MyFiles definiert werden, um die zurückgegebenen Dateinamen zu speichern Um Dateien im Verzeichnis der obersten Ebene zu speichern, definieren Sie außerdem ein String-Array-Objekt „MyDirs“, um sie zu speichern. Anschließend können Sie die Arrays MyFiles und MyDirs zum Werteobjekt hinzufügen. Als letztes müssen Sie eine Datenquelle hinzufügen und Daten an das ListBox-Steuerobjekt FileList binden. Eines muss erklärt werden: Wenn das aktuelle Verzeichnis nicht das Verzeichnis der obersten Ebene ist, müssen Sie in das Verzeichnis der oberen Ebene zurückkehren können. Dazu müssen Sie die Option „Zurück zum Verzeichnis der oberen Ebene“ hinzufügen. Option zur FileList.
2. Mehrstufige Verzeichnisanzeige
Mit den beiden im vorherigen Abschnitt aufgeführten Codeteilen können Sie beim Laden der Seite den gesamten Inhalt im Verzeichnis der obersten Ebene auflisten. Natürlich reicht es nicht aus, den Inhalt des Verzeichnisses der obersten Ebene aufzulisten. Ähnlich wie beim Windows-Betriebssystem sind auch die Ordnerverzeichnisse auf der Netzwerkfestplatte verschachtelt und es gibt zwei oder mehr Ebenen von Ordnerverzeichnissen. Zu diesem Zweck muss eine entsprechende Verarbeitung durchgeführt werden, damit Benutzer den Inhalt von Ordnern mit mehreren Ebenen anzeigen können. Das bisherige Schnittstellendesign bietet eine Schaltfläche „Öffnen“. Nachdem der Benutzer den entsprechenden Ordner ausgewählt hat, klickt er auf die Schaltfläche, um den Inhalt des Ordners anzuzeigen.
Fügen Sie nun den Code für die Schaltfläche „Öffnen“ hinzu. Doppelklicken Sie auf die Schaltfläche im Bereich „Design“. Das System fügt automatisch ein Ereignis hinzu. Der Codeinhalt lautet wie folgt:
private void btnOpen_Click(object sender, System.EventArgs e) { if(FileList.SelectedItem.Text=="Zurück zum Verzeichnis der oberen Ebene") //Zurück zum Verzeichnis der oberen Ebene{ string ParentPath=Directory.GetParent(CurrentPath).ToString(); LoadDir(ParentPath); zurückkehren; } sonst //Verzeichnis öffnen{ LoadDir(FileList.SelectedItem.Text); } } |
Das Programm ermittelt zunächst, ob der Benutzer „Zurück in das obere Verzeichnis“ ausgewählt hat. Wenn dies der Fall ist, müssen Sie zuerst den Ordnernamen der oberen Ebene über die Methode Directory.GetParent() zurückgeben und dann die Methode LoadDir() aufrufen, um den Inhalt des Verzeichnisses anzuzeigen Wenn Sie kein Verzeichnis, sondern einen Ordnernamen angeben, können Sie die LoadDir()-Methode direkt aufrufen. FileList.SelectedItem.Text ist der ausgewählte Ordnername, der als Parameter der LoadDir()-Methode verwendet wird.