Nano Hash - криптовалюты, майнинг, программирование

Как построить Treeview с флажком в Asp.net

Я хочу показать весь свой каталог на основе входного пути. До сих пор я достиг дерева. Как я могу сделать древовидное представление Asp.net с флажком?

Вот мой код

protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
{
   // ListDirectory(tvTreeView, Server.MapPath("~/"));
    DirectoryInfo dir = new DirectoryInfo(Server.MapPath("~/"));
    TreeNode mainNode = new TreeNode();

    mainNode.Text = dir.Name;
    mainNode.Checked = true;
    mainNode.NavigateUrl = "~/" + dir.Name;
    TreeView1.Nodes.Add(mainNode);
    foreach (DirectoryInfo subDir in dir.GetDirectories())
    {
        TreeNode parentNode = new TreeNode();

        parentNode.Text = subDir.Name;
        parentNode.NavigateUrl = "~/" + dir.Name + "/" + subDir.Name;


        foreach (FileInfo file in subDir.GetFiles())
        {
            TreeNode subNode = new TreeNode();


            subNode.Text = file.Name;
            subNode.NavigateUrl = "~/" + dir.Name + "/" + subDir.Name + "/" + file.Name;

            //Add it to the parent node
            parentNode.ChildNodes.Add(subNode);
        }

        TreeView1.Nodes[0].ChildNodes.Add(parentNode);
    }
}
18.10.2012

Ответы:


1

Не полностью переваривая ваш код, я предполагаю, что проблема, с которой вы столкнулись (и не указали), заключается в том, что дерево показывает только один уровень подпапок и файлов в этих папках.

Это основной вариант использования рекурсии.

Если это ваша проблема, то вы можете решить ее с помощью рекурсии примерно следующим образом (обратите внимание - это специально - поэтому используйте его в качестве основы, взятого с недоверием):

private void AddNodeForDirectory(DirectoryInfo directory, TreeNode directoryNode)
{
    foreach (DirectoryInfo subDirectory in directory.GetDirectories())
    {
        TreeNode subDirectoryNode = new TreeNode
        {
            Text = subDirectory.Name,
            NavigateUrl = // some path... I leave this to you 
        };

        foreach (FileInfo file in subDirectory.GetFiles())
        {
            TreeNode fileNode = new TreeNode
            {
                Text = file.Name,
                NavigateUrl = // some path... I leave this to you
            };  

            subDirectoryNode.ChildNodes.Add(fileNode);
        }

        directoryNode.ChildNodes.Add(subDirectoryNode);

        // Here is the recursion
        this.AddNodeForDirectory(subDirectory, subDirectoryNode);
    }
}

Идея состоит в том, что вы вызываете метод, передавая информацию о своем корневом каталоге и корневом узле дерева, и он рекурсивно заполняет дерево, углубляясь в информацию о вашем каталоге. Также обратите внимание, что рекурсия может привести к переполнению стека, поэтому вы должны знать об опасностях.

18.10.2012

2

Установите для свойства CheckBoxes представления в виде дерева значение true.

treeView1.CheckBoxes = истина;

18.10.2012
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..