2013-10-02 4 views
0

У меня есть TreeView в моем коде (Tree1), и я собираюсь добавить узлы в глубину, используя мой метод CreatTree(). В отладки я понял, что эта линияAsp.net: TreeView и Index были за пределами допустимого диапазона

(Tree1.Nodes[i].ChildNodes.Add(new TreeNode(i.ToString()))) не приводит к добавлению узла в дереве таким образом, ошибка в петле:

Индекс находился вне диапазона. Должен быть неотрицательным и меньше размера коллекции. Имя параметра: индекс

Может ли кто-нибудь сказать мне, как я могу добавить Ребенка в определенный узел?

<asp:TreeView ID="Tree1" runat="server" > 
</asp:TreeView> 

Код за это:

protected void CreateTree() 
     { 

      Tree1.Nodes.Add(new TreeNode("0")); 


      for (int i = 0; i < 4; i++) 
       Tree1.Nodes[i].ChildNodes.Add(new TreeNode(i.ToString()));; 



     } 

ответ

0

вы можете попытался с ниже код, потому что на патентном уровне вы добавили только 1 запись, и вы пытались добавить новый дочерний узел в четырех различных родительского узла.

protected void CreateTree() 
     { 

      Tree1.Nodes.Add(new TreeNode("0")); 


      for (int i = 0; i < 4; i++) 
       Tree1.Nodes[0].ChildNodes.Add(new TreeNode(i.ToString()));; 



     } 
+0

он просто добавляет ребенка к * Root *, но я хочу добавить узлы в глубину . Я имею в виду, что хочу иметь детей для узла [1] – Salman

+0

жаль, что у меня не было вашего требования. можете ли вы объяснить по изображению с вопросом редактирования? –

+0

@ Naresh Pansuriya: у меня уже есть узел как мой корень в цикле. Я собираюсь добавить ребенка к последнему узлу – Salman

0

Это должно делать то, что я думаю, что вы ищете:

protected void CreateTree() 
{ 
    Tree1.Nodes.Add(new TreeNode("0")); 

    TreeNode currentNode = Tree1.Nodes[0]; 

    for (int i = 0; i < 4; i++) 
    { 
     currentNode.ChildNodes.Add(new TreeNode(i.ToString())); 
     currentNode = currentNode.ChildNodes[0]; 
    } 
} 

Вы будете в конечном итоге с 5 узлами, один под другим.