Уже есть некоторый код, который почти у цели и нуждается в некоторых окончательных настройках.
Вот мой ожидаемый результат:
ParentNode1
|----ChildNode1 (3)
|----ChildNode2 (2)
|----ChildNode3
ParentNode2
|----ChildNode4 (2)
|----ChildNode5
Узел, что у дочерних узлов 3 и 5 есть только одна "запись", из которой я извлекаю свои данные (строка данных).
dr["Contact"] = drows_cont[0].ItemArray[2].ToString();
TreeNode temp = new TreeNode();
temp.Text = (dr["Contact"].ToString());
temp.Name = temp.Text;
if(contactNode1.Nodes.Count == 0)/*node has no children or is null*/
{
contactNode1.Nodes.Add(temp);
}
else
{
int index = 1;
foreach(TreeNode loopNode in contactNode1.Nodes)
{
index = 1;
for(int i=0; i < contactNode1.Nodes.Count; i++)
{
if(contactNode1.Nodes[i].Name == temp.Name) //if match found
{
index = contactNode1.GetNodeCount(false);
contactNode1.Nodes[i].Text = (dr["Contact"].ToString()) + " " + index;
}
}
if (index <= 1)
{
contactNode1.Nodes.Add(temp); //AddToList
break;
}
}
}
Чтобы прояснить мою логику выше, если родительский узел имеет значение Null, он добавит 1 дочерний узел (временный узел).
С этого момента он всегда попадает в остальное. Я новичок в Foreach, так как Loopnode никогда не используется: \
Команда for (в foreach) используется для сравнения временного узла с каждым узлом в списке, и, если найден дублирующий узел, он изменит имя с «ChildNode4» на «ChildNode4 (2)», добавив 1 для каждого найден дубликат (например, от "ChildNode4 (2)" до "ChildNode4 (3)" и т. д.)
Если дубликат не найден в цикле For, индекс не изменяется и, таким образом, попадает в финал if и добавляет его в родительский узел.
Может ли кто-нибудь указать мне правильное направление? Возможно, мне нужно исправить свой Foreach, или я неправильно использую свой GetNodeCount (пока он всегда возвращает 0).
Редактировать: Начиная с кода, который я разместил, я всегда получу: ChildNode3 (0) вместо действительного числа. Каким-то образом мне нужно, чтобы GetNodeCount фактически отражал количество ChildNode3s, фактически не показывая все ChildNode3s
Спасибо!