TreeNodeView в ASP.NET, не могу вывести всю иерархию

212
17 апреля 2017, 02:32

Всем привет! Я новичок в C# и APS.NET. У меня задание - сделать вывод данных из базы в виде иерархического списка (древесной структуры). Я создал проект веб-форм и написал такой код:

namespace HierarchyApp
{
    public partial class _Default : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Populate_List();
            }
        }
        private void Populate_List()
        {
            List<Hierarchy_Table> All_Items = new List<Hierarchy_Table>();
            using (Hierarchy_DBEntities dc = new Hierarchy_DBEntities())
            {
                All_Items = dc.Hierarchy_Table.ToList();
            }
            CreateHierarchy(0, null, All_Items);
        }
        private void CreateHierarchy(int Parent_ID, TreeNode Parent, List<Hierarchy_Table> database_source)
        {
            List<Hierarchy_Table> new_database_source = database_source.Where(x => x.PARENT_ID.Equals(Parent_ID)).ToList();
            foreach (var item in new_database_source)
            {
                TreeNode newItem = new TreeNode(item.NAME, item.ID.ToString());
                if (Parent == null)
                {
                    Hierarchy_Menu.Nodes.Add(newItem);
                }
                else
                {
                    {
                        Parent.ChildNodes.Add(newItem);
                    }
                    CreateHierarchy(item.ID, newItem, database_source);
                }
            }
        }
    }
}

Проблема в том, что выводятся только первые элементы дерева, а их дочерние элементы не выводятся, не могу понять почему. Подскажите! Заранее спасибо.

Answer 1

Вы в функцию CreateHierarchy(0, null, All_Items); в параметр Parent передаете null. Соответственно в самой функции, в блок else не попадаем:

            if (Parent == null) // null == null на всех итерациях цикла
            {
                Hierarchy_Menu.Nodes.Add(newItem);
            }
            else
            {
                {
                    Parent.ChildNodes.Add(newItem);
                }
                CreateHierarchy(item.ID, newItem, database_source);
            }

Поэтому все элементы выводятся первыми.

READ ALSO
как в console Нарисовать круг c#

как в console Нарисовать круг c#

как в console Нарисовать круг c# "*"

1074
Поиск одинаковых значений в массиве php

Поиск одинаковых значений в массиве php

Необходимо найти повторяющиеся элементы в массиве для этого я пишу следующие

296
MySQL. Переменные в запросе

MySQL. Переменные в запросе

При выполнении пишет

253
php://input пустой, при content-type: application/json

php://input пустой, при content-type: application/json

Собственно вопрос в сабже, поток пустой при отправке jsonПосылаю тоже самое но с заголовком application/x-www-form-urlencoded и данные содержатся в потоке

241