Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用ASP.NET C中的文件填充树视图#_C#_Asp.net_Treeview_Treenode_Directoryinfo - Fatal编程技术网

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

C# 用ASP.NET C中的文件填充树视图#,c#,asp.net,treeview,treenode,directoryinfo,C#,Asp.net,Treeview,Treenode,Directoryinfo,我有一个树视图,我正试图填充文件夹和文件。树视图正在填充文件夹,但没有填充文件。这是我的密码: protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { PopulateTree(); } } private void PopulateTr

我有一个树视图,我正试图填充文件夹和文件。树视图正在填充文件夹,但没有填充文件。这是我的密码:

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:\inetpub\wwwroot\yourwebproject");
    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;
}

你的子串伤了我的大脑。你知道FileInfo有一个扩展属性吗?@bickets不,我不知道。尽管如此,我还是会选择在DirectoryInfo上使用GetFiles重载,它允许您预先指定搜索模式。@饼干,您能给我一个代码示例吗?foreach(子文件夹.GetFiles(*.bch)中的FileInfo文件)我刚刚试过您的代码,我仍然只获取文件夹,没有文件。我遗漏了什么吗?那么我想问题是分机不是真的。bch。尝试以下操作:不,它实际上是文件扩展名。我将为您发布文件的图片。当您在“var tn=…”行上放置断点时会发生什么?它被击中了吗?那些文件不是被标记为隐藏的吗?(但是GetFiles()甚至应该返回隐藏的文件)