2015-05-18 56 views
0

我目前正在編寫一個自定義Web窗體控件,其中包括嵌入式TreeView控件。這個TreeView控件的內容是編程產生這樣的:ASP TreeView:所有節點都有相同的ID

public void PopulateTreeView(TreeView treeView) 
    { 
     // Initialize with a single root node. 
     treeView.Nodes.Clear(); 
     TreeNode currentNode = new TreeNode("root"); 
     treeView.Nodes.Add(currentNode); 

     // Some logic with basically a depth first search through some data classes. 
     { 
      TreeNode node = new TreeNode(/* node label */); 
      currentNode.ChildNodes.Add(node); 

      if (/* some condition */) 
      { 
       currentNode = node; 
      } 
     } 

    } 

渲染時,一切都看起來不錯,但生成的所有HTML元素的ID是ControlName1n0,它具有點擊擴大效果/摺疊圖標只會展開/摺疊根節點。

有誰知道這是什麼原因或如何解決這個問題?

+1

沒有看到實際的代碼(它將對你的整體發佈,或至少相關的位是有用的),我的直覺是你沒有動態分配的ID在創建節點時。請顯示您添加ID的位置。 – mjw

+0

這是_is_實際代碼的相關位,我確實沒有用TreeNodes做更多的事情,而不是創建它們並將它們分配給它們各自的父母。 我也無法找到[這裏](https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.treenode%28v=vs.110%29.aspx)給TreeNodes分配一個ID - 唯一提到的就是分配不同的_Value_屬性,但這沒有幫助。 –

回答

0

移動代碼以創建從Render方法到OnPreRender方法的TreeNodes解決了該問題;現在所有節點都獲得唯一的ID。

相關問題