Member 12694392 Ответов: 1

Участок treeview in ASP.NET с#


string[] tagdata = {"TestAlarm1.T1", "Test1.S1.S4", "TestAlarm1.T2", "test2.T1", "Test1.S1.S2.Tag1"}

у меня есть вышеприведенные данные, я сделал то же самое в приложении windows, до этого работавшем.
но в ASP.net я не могу использовать свойство "ContainsKey".
Как я могу решить то же самое в ASP??
ТИА

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

oreach (string name in data)
                    {
                        if (nodes.ContainsKey(name))
                        {
                            node = nodes[name];
                        }
                        else
                        {
                            node = new TreeNode(name);
                            node.Name = name;
                            nodes.Add(node);
                        }
                        nodes = node.Nodes;
                    }

это работало в приложении windows, но не работало в ASP.net

1 Ответов

Рейтинг:
1

phil.o

В общем, вы не можете скопировать и вставить какой-то код Windows Forms в приложение. ASP.NET проектируйте и ожидайте, что он будет работать, потому что объекты не одинаковы между обеими технологиями.
форма Windows TreeView это не то же самое, что Ан ASP.NET TreeView, даже если они имеют одно и то же имя.

ASP.NET TreeView имеет FindNode(строка)[^], которая возвращает TreeNode если указанная строка найдена, а в противном случае возвращает null.
Это дало бы:

foreach (string name in data)
{
   if ((node = treeView.FindNode(name)) == null)
   {
      // code to add a new node here
   }
   nodes = node.ChildNodes;
}

Обратите внимание, что Ан ASP.NET TreeNode не имеет а Nodes свойство; вместо этого он имеет ChildNodes собственность.
Вы всегда должны обращаться к основной документации объектов, которые вы собираетесь использовать:
Класс TreeView (ASP.NET)[^]
Класс TreeNode (ASP.NET)[^]


Member 12694392

Узлы TreeNodeCollection = TreeView1.Nodes;
foreach (строковое имя в данных)
{
если ((узел = элемента управления treeview1.FindNode(имя)) == нуль)
{
node = новый TreeNode(имя);
узлы.Добавить(узел);
}
узлы = узел.ChildNodes;
}
сделано, но не работает правильно в этом случае.
NoBug.T1.S1
Нобуг.Т1.С2
Нобуг.Т1.С3
Нобуг.Т2.Н1
NoBug.T2.N2
NoBug.T2.N3
T1 и T2 появляются несколько раз, что неправильно.

phil.o

Не имея доступа к вашему решению или фактическим значениям в узлах во время работы вашего приложения, я боюсь, что мне будет довольно трудно догадаться, в чем может быть проблема.
Вам нужно будет поставить точку останова в начале метода, нажать клавишу F5 и начать отладку построчно отсюда. Внимательно изучите значения в узлах treeview. Вам нужна помощь в том, как провести сеанс отладки в Visual Studio?

Member 12694392

в приведенном выше примере NoBug-это parent, а T1-parent1, но когда я строю дерево w.r.t. выше примера, я получаю несколько T1.
упомянутая логика сравнивает только родителя, а не parent1.
ТИА

BillWoodruff

+5