我想在asp.net中使用treeview以递归方式浏览文件夹中的文件和文件夹

时间:2011-12-08 22:16:54

标签: asp.net

我正在寻找一个控件或示例项目,使用treeview以递归方式浏览已定义文件夹的文件和文件夹。

我不知道是否有像这样的免费控制/样本项目?

提前致谢。

1 个答案:

答案 0 :(得分:1)

请参阅我的文章 - Build a File tree explorer with asp.net and jquery。原始jquery文件在文章中指定的源代码中不再可用。但是,我有jquery文件,可以使它可用。

编辑:我会稍微发布一下代码。

代码如下:

首先,您需要服务器代码才能访问文件系统。这可以进入代码隐藏文件或aspx页面本身 - 只需删除其他所有内容。

 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim dir As String
    If Request.Form("dir") Is Nothing Or Request.Form("dir").Length <= 0 Then
        dir = "/"
    Else
        dir = Request.Form("dir")
    End If
    Dim di As New System.IO.DirectoryInfo(Server.MapPath(dir))
    Dim sb As New StringBuilder
    sb.Append("<ul class=""jqueryFileTree"" style=""display: none;"">" & ControlChars.Lf)
    Dim di_child As System.IO.DirectoryInfo
    For Each di_child In di.GetDirectories()
        sb.Append((ControlChars.Tab & "<li class=""directory collapsed""><a href=""#"" rel=""" & dir & di_child.Name & "/"">" & di_child.Name & "</a></li>" & ControlChars.Lf))
    Next di_child
    Dim fi As System.IO.FileInfo
    For Each fi In di.GetFiles()
        Dim ext As String = ""
        If fi.Extension.Length > 1 Then
            ext = fi.Extension.Substring(1).ToLower()
        End If

        sb.Append((ControlChars.Tab & "<li class=""file ext_" & ext & """><a href=""#"" rel=""" & dir & fi.Name & """>" & fi.Name & "</a></li>" & ControlChars.Lf))
    Next fi
    sb.Append("</ul>")
    Response.Write(sb.ToString)
End Sub

接下来,您需要一个页面来显示文件树。该页面需要引用jquery核心文件和jquery文件树脚本。我碰巧在我的母版页中引用了jquery核心文件。

<link href="../styles/jqueryFileTree.css" rel="stylesheet" type="text/css" />
<script src="../scripts/jqueryFileTree.js" type="text/javascript"></script>

在显示文件树的页面中,粘贴此代码。 Root是要浏览的目录,filetree.aspx上面有服务代码。 div成为文件树。对于演示,我使用iframe作为文件查看器。

<script type="text/javascript">
    var $j = jQuery.noConflict();
    $j(document).ready(function () {
        $j('#divFileTree').fileTree({
            root: '/demos/',
            script: 'filetree.aspx',
            expandSpeed: 1000,
            collapseSpeed: 1000,
            multiFolder: false
        }, function (file) {
            alert(file);
            $j('#demoviewer').attr('src', file);
        });
    });


</script>
<div id="divFileTree"></div>