Samira Radwan Ответов: 1

Просмотр каталога в веб-форме


Всем Привет,
Мне нужно просмотреть каталог в веб-форме с помощью ASP.NET.
Мне удалось получить все подкаталоги выбранной папки/каталога, но проблема в том, что я не знаю, сколько уровней подкаталогов у меня есть для каждого каталога. Например, если я просматриваю папку/каталог под названием AA, который имеет 50 подпапок, и каждая подпапка может иметь другую подпапку и другую подпапку или просто список файлов.

Есть ли способ отобразить компоненты каталога пользователю, чтобы он мог перемещаться до тех пор, пока не найдет нужные файлы, независимо от того, сколько вложенных папок в этой папке?

Любая помощь будет очень признательна, так как у меня нет идей
Заранее спасибо

Что я уже пробовал:

Вот как я просматриваю/ перечисляю все подкаталоги выбранного каталога:
DirectoryInfo dir;
            StringBuilder sb = new StringBuilder();
            FileInfo[] files;
            DirectoryInfo[] directories;
            dir = new DirectoryInfo(@"\\10.0.0.8\d$\abc\efg\xyz\qwer\install_guides");
            files = dir.GetFiles();
            directories = dir.GetDirectories();

            foreach (DirectoryInfo d in directories)
            {
                sb.Append("<a href=\"http://abc/install_guides/" + d.Name.ToString() + "\">");
                sb.Append(d.Name.ToString() + "</a><br />");
            }

[no name]

https://msdn.microsoft.com/en-us/library/ms143316.aspx

1 Ответов

Рейтинг:
7

Samira Radwan

Мне удалось сделать это с помощью TreeView. Я создал две функции: одну для заполнения TreeView, если есть подкаталоги, и другую для заполнения TreeView, если нет папок.
Первый:

private void PopulateTreeView_WithDirectories(DirectoryInfo dirInfo,TreeView treeView, TreeNode treeNode)
        {
                foreach (DirectoryInfo directory in dirInfo.GetDirectories())
                {
                    TreeNode directoryNode = new TreeNode
                    {
                        Text = directory.Name,
                        Value = directory.FullName
                    };
                    if (treeNode == null)
                    {
                        //If Root Node, add to TreeView.
                        treeView.Nodes.Add(directoryNode);
                    }
                    else
                    {
                        //If Child Node, add to Parent Node.
                        treeNode.ChildNodes.Add(directoryNode);
                    }

                    //Get all files in the Directory.
                    foreach (FileInfo file in directory.GetFiles())
                    {
                        //Add each file as Child Node.
                        TreeNode fileNode = new TreeNode
                        {
                            Text = file.Name,
                            //Value = file.FullName,                        
                            Value = file.FullName,
                            Target = "_blank",
                            NavigateUrl = (new Uri(Server.MapPath("~/"))).MakeRelativeUri(new Uri(file.FullName).ToString()

                        };
                        directoryNode.ChildNodes.Add(fileNode);
                    }

                    directoryNode.CollapseAll();
                    PopulateTreeView_WithDirectories(directory, treeView, directoryNode);
                }           
        }

Второй:
private void PopulateTreeView_WithFiles(DirectoryInfo dirInfo, TreeView treeView, TreeNode treeNode)
        {
           DirectoryInfo directory=dirInfo;
            if(directory.Name !=null)
            {
            TreeNode directoryNode = new TreeNode
            {
                Text =directory.Name,
                Value = directory.FullName
            };
            if (treeNode == null)
            {
                //If Root Node, add to TreeView.
                treeView.Nodes.Add(directoryNode);
            }
            else
            {
                //If Child Node, add to Parent Node.
                treeNode.ChildNodes.Add(directoryNode);
            }

            //Get all files in the Directory.
            foreach (FileInfo file in directory.GetFiles())
            {
                //Add each file as Child Node.
                TreeNode fileNode = new TreeNode
                {
                    Text = file.Name,
                    //Value = file.FullName,                        
                    Value = file.FullName,
                    Target = "_blank",
                    NavigateUrl = (new Uri(Server.MapPath("~/"))).MakeRelativeUri(new Uri(file.FullName).ToString()

                };
                directoryNode.ChildNodes.Add(fileNode);
            }

            directoryNode.CollapseAll();
            PopulateTreeView_WithDirectories(directory, treeView, directoryNode);
            }
        } 

Надеюсь, это поможет другим

Спасибо,
Самира