加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

使用ASP.NET C#中的文件填充树视图

发布时间:2020-12-16 09:41:15 所属栏目:asp.Net 来源:网络整理
导读:我有一个树视图,我试图填充文件夹和文件.树视图填充文件夹就好了但不是文件.这是我的代码: protected void Page_Load(object sender,EventArgs e) { if (!IsPostBack) { PopulateTree(); } }private void PopulateTree() { //Populate the tree based on th
我有一个树视图,我试图填充文件夹和文件.树视图填充文件夹就好了但不是文件.这是我的代码:

protected void Page_Load(object sender,EventArgs e)
        {

            if (!IsPostBack)
            {
                PopulateTree();
            }              

        }

private void PopulateTree()
        {
            //Populate the tree based on the subfolders of the specified VirtualImageRoot
            var rootFolder = new DirectoryInfo(VirtualImageRoot);
            var root = AddNodeAndDescendents(rootFolder,null);

            //Add the root to the TreeView
            TreeView1.Nodes.Add(root);
        }

private TreeNode AddNodeAndDescendents(DirectoryInfo folder,TreeNode parentNode)
        {
            //Add the TreeNode,displaying the folder's name and storing the full path to the folder as the value...
            string virtualFolderPath;

            if (parentNode == null)
            {
                virtualFolderPath = VirtualImageRoot;
            }
            else
            {
                virtualFolderPath = parentNode.Value + folder.Name + "/";
            }

            var node = new TreeNode(folder.Name,virtualFolderPath);

            //Recurse through this folder's subfolders
            var subFolders = folder.GetDirectories();

            foreach (DirectoryInfo subFolder in subFolders)
            {
                var child = AddNodeAndDescendents(subFolder,node);

                foreach (FileInfo file in subFolder.GetFiles())
                {

                    var index = file.FullName.LastIndexOf(@"",StringComparison.Ordinal);
                    var strname = file.FullName.Substring(index + 1);
                    var name = strname.Split('.');

                    var tn = new TreeNode();
                    if (name.Length > 1 && name[1].ToLower() == "bch")
                    {
                        tn = new TreeNode(name[0],file.FullName);
                    }
                    else
                    {
                        tn = new TreeNode(name[0],file.FullName);
                    }
                    child.ChildNodes.Add(tn);
                }
                node.ChildNodes.Add(child);

            }
            //Return the new TreeNode
            return node;
        }

这是我的树的样子:

这是文件夹中文件的图片:

我只是想显示类型.bch的文件,以及我的树视图中的文件夹.有人可以告诉我我做错了什么吗?

解决方法

问题是您的代码没有考虑文件夹层次结构的第一级:

private void PopulateTree()
{
    var rootFolder = new DirectoryInfo(@"C:inetpubwwwrootyourwebproject");
    var root = AddNodeAndDescendents(rootFolder);
    TreeView1.Nodes.Add(root);
}

private TreeNode AddNodeAndDescendents(DirectoryInfo folder)
{        
    var node = new TreeNode(folder.Name,folder.Name);

    var subFolders = folder.GetDirectories();

    foreach (DirectoryInfo subFolder in subFolders)
    {
        var child = AddNodeAndDescendents(subFolder);
        node.ChildNodes.Add(child);
    }

    foreach (FileInfo file in folder.GetFiles("*.bch"))
    {
        var tn = new TreeNode(file.Name,file.FullName);
        node.ChildNodes.Add(tn);
    }
    return node;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读