已經有一些代碼幾乎在那裏,需要一些最終的調整。C#TreeView - 生成沒有重複節點計數的樹
這是我期望的輸出:
ParentNode1
|----ChildNode1 (3)
|----ChildNode2 (2)
|----ChildNode3
ParentNode2
|----ChildNode4 (2)
|----ChildNode5
節點時的childNodes 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來實際反映ChildNode3的數量,而不實際顯示所有的ChildNode3。
謝謝!
這並不完全清楚你遇到什麼問題。你能更具體地說明你需要回答什麼問題嗎? – 2011-04-05 15:04:30
我建議說你的代碼有什麼問題? – 2011-04-05 15:06:50
截至我發佈的代碼,我總是會得到:ChildNode3(0)而不是實際的數字。不知何故,我需要GetNodeCount來真實反映ChildNode3的數量',而實際上沒有顯示所有的ChildNode3 – Demasterpl 2011-04-05 15:32:10