2011-11-11 146 views
2

Woohoo!我得到一个关于堆栈溢出的问题...在stackoverflow :)C#填充TreeView递归堆栈溢出

所以它可能只是它是星期五,我的大脑已经炸了,但我想写一个递归填充给定TreeView的类使用从TreeNode和简单接口继承的通用类型的对象。

出于某种原因,我在尝试填充节点时遇到了一个stackoverflow异常。

我简单的接口:

public interface ITreeNode 
{ 
    int ItemID { get; set; } 
    int ParentID { get; set; } 
} 

递归码:

public void SetNodes(int rootId) 
{ 
    foreach (T root in _nodeList.Where(i => i.ParentID == rootId)) 
    { 
     _tree.Nodes.Add(root); 
     addBrowserItems(root); 
    } 
} 

private void addBrowserItems(T parentNode) 
{ 
    foreach (T child in _nodeList.Where(i => i.ParentID == parentNode.ItemID)) 
    { 
     parentNode.Nodes.Add(child); 
     addBrowserItems(child); 
    } 
} 
+1

你的树有多深? – Aliostad

+1

@Aliostad - 让我想起了一首评论的歌曲。 – ThePower

+0

什么歌?我可能知道.... – Aliostad

回答

2

OK,所以亨克得到它,有一个周期。

我有2个单独的文件夹项目和报表项目填充树视图 - 我在两个ID中使用身份列 - 身份被复制一个文件夹,同时具有另一个文件夹和报表项作为儿童。

我刚刚添加了一个检查,只调用文件夹项递归,现在它完美的工作。

我知道这是一个愚蠢的周五错误。

感谢您的帮助!