2011-11-11 13 views
2

Woohoo!私は、スタックオーバーフローに関する質問を投稿することができます... stackoverflowでC#TreeViewを再帰的に実装するオーバーフロー

それは金曜日だと私の脳はすでに揚げているかもしれないが、私は再帰的に特定のTreeViewを作成するクラスを書くしようとしているTreeNodeと単純なインタフェースを継承するジェネリック型のオブジェクトがあります。

ノードにデータを挿入しようとすると、何らかの理由でスタックオーバーフロー例外が発生します。

私のシンプルなインターフェース:

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としてIDカラムを使用していました。子供。

私はちょうどフォルダ項目の再帰を呼び出すためのチェックを追加しました、そして今すぐ完全に動作します。

私はそれが愚かな金曜日のミスであることを知っていました。

ありがとうございました!

関連する問題