การออกแบบโฟลเดอร์ ASP.NET การใช้งานฮาร์ดไดรฟ์เครือข่าย
ผู้เขียน:Eve Cole
เวลาอัปเดต:2009-06-30 15:39:42
ดังที่ได้กล่าวไว้เมื่อแนะนำแนวคิดของ "ฮาร์ดไดรฟ์เครือข่าย" ผู้ใช้แต่ละคนจะมีพื้นที่ของตัวเองใน "ฮาร์ดไดรฟ์เครือข่าย" นี่คือวิธีการจัดการในการออกแบบโปรแกรมต่อไปนี้: มีโฟลเดอร์คงที่สำหรับผู้ใช้ ซึ่งผู้ใช้สามารถเพิ่ม/ลบโฟลเดอร์หรือไฟล์ใหม่ได้ ดังแสดงในรูปที่ 1 เมื่อคุณเปิดเว็บเพจเป็นครั้งแรก เนื้อหาทั้งหมดภายใต้โฟลเดอร์ (รวมถึงไฟล์และโฟลเดอร์) จะถูกแสดงรายการ หากคุณต้องการเข้าสู่โฟลเดอร์ระดับถัดไป คุณสามารถเลือกโฟลเดอร์แล้วคลิกปุ่ม "เปิด" เพื่อเข้าไป การใช้งานฟังก์ชั่นการดูเนื้อหาของโฟลเดอร์จะอธิบายทีละขั้นตอนด้านล่างนี้
รูปที่ 1 ส่วนติดต่อผู้ใช้หลัก |
1. การโหลดหน้า
เนื่องจากไดเร็กทอรีผู้ใช้ที่โปรแกรมระบุไว้ได้รับการแก้ไข เช่น c:UserDir และเนื้อหาทั้งหมดของโฟลเดอร์จำเป็นต้องแสดงหลังจากโหลดเพจแล้ว การดำเนินการที่เกี่ยวข้องจะต้องดำเนินการใน Page_Load: ขั้นแรกให้พิจารณาว่ามีโฟลเดอร์อยู่หรือไม่ หากไม่มีอยู่คุณจะต้องสร้างมันขึ้นมาก่อน จากนั้นจึงแสดงรายการเนื้อหาภายใต้โฟลเดอร์ โค้ดจะถูกนำไปใช้ดังนี้:
โมฆะส่วนตัว Page_Load (ผู้ส่งวัตถุ System.EventArgs e) - //ใส่รหัสผู้ใช้ที่นี่เพื่อเริ่มต้นเพจ
ถ้า (หน้า IsPostBack==false) - CurrentPath= @"c:UserDir"; //ตั้งค่าไดเร็กทอรีปัจจุบัน if(Directory.Exists(@"c:UserDir")==false) //หากไม่มีไดเร็กทอรี ให้สร้างไดเร็กทอรีไดเร็กทอรี CreateDirectory( @"c:UserDir"); LoadDir(CurrentPath); //เริ่มต้นไดเร็กทอรีการโหลด} -
|
วิธีการ LoadDir(string FullPath) ใช้เพื่อแสดงรายการเนื้อหาทั้งหมดในโฟลเดอร์ รหัสจะเป็นดังนี้:
โมฆะส่วนตัว LoadDir (สตริง FullPath) - CurrentPath=เส้นทางแบบเต็ม; ค่า ArrayList = new ArrayList(); สตริง [] MyFiles,MyDirs; MyFiles = Directory.GetFiles(FullPath); //รับไฟล์ทั้งหมดในไดเร็กทอรี if(CurrentPath!=@"c:UserDir") //หากไม่ใช่ไดเร็กทอรีบนสุด ให้เพิ่มตัวเลือก "return to the upper directory" { value.Add("กลับสู่ไดเร็กทอรีด้านบน"); -
value.AddRange(MyFiles); //เพิ่มไฟล์ MyDirs= Directory.GetDirectories(FullPath); //รับไดเร็กทอรีทั้งหมดในไดเร็กทอรีนี้.AddRange(MyDirs); //เพิ่มไดเร็กทอรี FileList.DataSource=values; FileList.DataBind(); //ผูกข้อมูล - |
ขั้นแรก ให้กำหนดค่าอ็อบเจ็กต์อาร์เรย์ ArrayList เพื่อจัดเก็บเนื้อหาทั้งหมดของไดเร็กทอรีระดับบนสุด (รวมถึงชื่อโฟลเดอร์และชื่อไฟล์) เมธอด Directory.GetFiles() ส่งคืนชื่อไฟล์ทั้งหมดในไดเร็กทอรีระดับบนสุด ประเภทการส่งคืนคืออาร์เรย์สตริง ดังนั้นจึงจำเป็นต้องกำหนดออบเจ็กต์คลาสสตริง MyFiles เพื่อบันทึกชื่อไฟล์ที่ส่งคืน ไฟล์ในไดเร็กทอรีระดับบนสุดชื่อโฟลเดอร์ยังกำหนดออบเจ็กต์สตริงอาร์เรย์ MyDirs เพื่อบันทึก หลังจากทำสิ่งนี้เสร็จแล้ว คุณสามารถเพิ่มอาร์เรย์ MyFiles และ MyDirs ให้กับอ็อบเจ็กต์ค่าได้ สิ่งสุดท้ายที่ต้องทำคือการเพิ่มแหล่งข้อมูลและผูกข้อมูลลงในวัตถุตัวควบคุมกล่องรายการ FileList สิ่งหนึ่งที่ต้องอธิบาย: หากไดเร็กทอรีปัจจุบันไม่ใช่ไดเร็กทอรีระดับบนสุด คุณจะต้องสามารถกลับไปยังไดเร็กทอรีระดับบนได้ เมื่อต้องการทำเช่นนี้ คุณต้องเพิ่ม "กลับไปยังไดเร็กทอรีระดับบน" ตัวเลือกไปยัง FileList
2. การดูไดเรกทอรีหลายระดับ
ด้วยโค้ดสองชิ้นที่แสดงอยู่ในส่วนก่อนหน้า คุณสามารถแสดงรายการเนื้อหาทั้งหมดในไดเร็กทอรีระดับบนสุดเมื่อโหลดเพจได้ แน่นอนว่าการแสดงรายการเนื้อหาของไดเร็กทอรีระดับบนสุดนั้นไม่เพียงพอ เช่นเดียวกับระบบปฏิบัติการ Windows ไดเร็กทอรีโฟลเดอร์ในฮาร์ดดิสก์เครือข่ายก็ซ้อนกันและมีไดเร็กทอรีโฟลเดอร์ตั้งแต่สองระดับขึ้นไป เพื่อจุดประสงค์นี้ จะต้องดำเนินการประมวลผลที่เกี่ยวข้องเพื่อให้ผู้ใช้สามารถดูเนื้อหาของโฟลเดอร์หลายระดับได้ การออกแบบอินเทอร์เฟซก่อนหน้านี้มีปุ่ม "เปิด" หลังจากที่ผู้ใช้เลือกโฟลเดอร์ที่เกี่ยวข้องแล้ว ให้คลิกปุ่มเพื่อดูเนื้อหาของโฟลเดอร์
ตอนนี้เพิ่มรหัสสำหรับปุ่ม "เปิด" ดับเบิลคลิกที่ปุ่มในแผง "การออกแบบ" จากนั้นระบบจะเพิ่มเหตุการณ์เข้าไปโดยอัตโนมัติ เนื้อหาโค้ดจะเป็นดังนี้:
โมฆะส่วนตัว btnOpen_Click (ผู้ส่งวัตถุ System.EventArgs e) - if(FileList.SelectedItem.Text=="กลับไปที่ไดเร็กทอรีระดับบน") // กลับไปยังไดเร็กทอรีระดับบน{ สตริง ParentPath=Directory.GetParent(CurrentPath).ToString(); LoadDir(พาเรนต์พาธ); กลับ; - อื่น // เปิดไดเร็กทอรี { LoadDir(FileList.SelectedItem.Text); - - |
ก่อนอื่นโปรแกรมจะพิจารณาว่าผู้ใช้เลือก "กลับไปที่ไดเร็กทอรีด้านบน" หรือไม่ หากเป็นเช่นนั้น คุณต้องส่งคืนชื่อโฟลเดอร์ระดับบนก่อนโดยใช้เมธอด Directory.GetParent() จากนั้นให้เรียกเมธอด LoadDir() เพื่อแสดงเนื้อหาของไดเร็กทอรี หากผู้ใช้เลือกไม่ "กลับไปที่ระดับบน" directory" แต่เป็นชื่อโฟลเดอร์ คุณสามารถเรียกเมธอด LoadDir() ได้โดยตรง FileList.SelectedItem.Text คือชื่อโฟลเดอร์ที่เลือก ซึ่งใช้เป็นพารามิเตอร์ของเมธอด LoadDir()