|
分類:[C#]
> 「どのように"再帰"を利用して木構造を作成していくかがわからない」
たとえば、最終的に表示させるデータが 大元 ├子1 │├孫11 │└孫12 └子2 ├孫21 └孫22 のような形式だとしたら、それを―― Oracle なら、START WITH / CONNECT BY SQL Server なら、再帰クエリ ――などを用いるなどして、 id 親 名前 ------------ 01 00 大元 02 01 子1 04 02 孫11 07 02 孫12 03 01 子2 06 03 孫11 05 03 孫22 のような、「ツリーでの見た目の表示順」になるように取り出せば、 C#側を再帰メソッドにする必要は無いかも知れません。
void Button1_Click(object sender, System.EventArgs e) { //実際には、データベースから取得 this.treeView1.Nodes.Clear(); AppendNode(treeView1, 1, 0, "大元"); AppendNode(treeView1, 2, 1, "子1"); AppendNode(treeView1, 4, 2, "孫11"); AppendNode(treeView1, 7, 2, "孫12"); AppendNode(treeView1, 3, 1, "子2"); AppendNode(treeView1, 6, 3, "孫21"); AppendNode(treeView1, 5, 3, "孫22"); }
void AppendNode(TreeView treeView, int id, int parentId, string name) { // .NET 2.0用 TreeNodeCollection nodes = treeView.Nodes; if(parentId != 0) { TreeNode[] parents = nodes.Find(parentId.ToString(), true); if(parents.Length != 0) { nodes = parents[0].Nodes; } } nodes.Add(id.ToString(), name); }
|