一个简单的 FolderViewer 控件






4.29/5 (7投票s)
本文档解释了如何开发您自己的文件夹查看器控件。
引言
在本文中,我介绍了一个非常简单的文件夹查看器控件。该控件显示文件夹中包含的文件夹和文件,并允许您导航不同的文件夹,以及返回目录结构。这个项目只是一个起点,供任何想要开发此类控件的人使用。您可能需要开发一个文件浏览应用程序,或者在 Web 应用程序中提供一个自定义的OpenDialogBox
。
Using the Code
将以下代码添加到您的项目中。此控件的 CSS 嵌入在*.ascx文件中,但是您可以将 CSS 代码放在外部文件中进行修改。
<CY:FolderView ID="FolderView1" runat="server" Width="600" Height="300" />
控件被赋予一个ID
,并设置了width
和height
属性。这是所需的所有代码。
代码
有两个foreach
循环,分别循环遍历文件夹和文件。每个循环都使用StringBuilder
类来构造 HTML 表格。
第一个循环负责列出所选目录中的所有文件夹。第二个循环显示目录中的文件。
这两个循环结合起来,帮助构造一个 HTML 表格,显示文件夹/文件名和上次修改日期。它还显示文件类型。
这两个循环都放在一个GenerateFolder()
方法中。当点击“后退”按钮时,该方法也会被使用。
为了显示文件类型,我使用了HashTable
和FileInfo
类的Extension
属性。下面的列表 1.2 显示了一个示例用法。
列表 1.1
type = new Hashtable();
type.Add(".doc", "Microsoft Word Document");
type.Add(".txt", "Text Document");
type.Add(".html", "HTML Document");
type.Add(".htm", "HTML Document");
type.Add(".ini", "Configuration File");
type.Add(".sql", "SQL File");
type.Add(".gif", "GIF Image");
type.Add(".jpg", "JPEG Image");
type.Add(".png", "PNG Image");
type.Add(".mp3", "Audio File");
type.Add(".wav", "Audio File");
type.Add(".avi", "Video File");
type.Add(".wmv", "Video File");
type.Add(".exe", "Executable File");
type.Add(".sys", "System File");
type.Add(".log", "Log File");
Response.Write(type[fileInfo.Extension.ToLower()]);
构造的表格然后被插入到一个 HTML div
元素中,允许您使用 CSS 属性overflow:auto
在需要时滚动表格。标题(名称、类型、修改日期)被插入到一个单独的div
中,该div
不属于可滚动的div
。
导航
导航是通过将文件夹路径添加到查询字符串并对 URL 进行编码来实现的。这并不是一个理想的解决方案,因为查询字符串只能容纳一定数量的字符。
“后退”按钮允许您返回目录结构。这是通过使用LastIndexOf()
方法找到‘/’的最后一个位置来实现的。找到位置后,使用Substring()
方法返回一个新的字符串,该字符串从string
中删除最后一个文件夹。列表 1.2 中的代码说明了这一点。
列表 1.2
protected void btnBack_Click(object sender, EventArgs e)
{
string AbsolutePath = Request.Url.AbsolutePath;
folder_path = Server.UrlDecode(Request.QueryString["Folder"]);
int pos = folder_path.LastIndexOf("\\");
try
{
folder_path = folder_path.Substring(0, pos);
}
catch (Exception ex)
{
folder_path = "C:\\";
}
GenerateFolder();
Response.Redirect(AbsolutePath + "?Folder=" + Server.UrlEncode(folder_path));
}
执行脚本的绝对路径被存储到一个变量中。这是必需的,因为页面需要使用新的查询字符串进行重定向。
使用try catch
块,在发生错误时默认返回到C:\驱动器。
您需要编写代码来实现点击文件名时执行所需的功能。
历史
- 2009 年 2 月 6 日:初始发布