错误的递归

为了能在webcontrols的Treeview中使用HTML 元素,试图用递归来产生Treeview的所有节点,
下面是我的尝试代码,当然结果是错误的。



 




        
public void Create1 ()
        
{
            thisNode 
=new TreeNode();
            TreeNode o 
= new TreeNode();
            dp 
= new Fiberxon.HR.Biz.Department();
            Fiberxon.HR.Biz.DeparmentNode RootDNode 
= dp.GetRoot();
            o.Text  
= RootDNode.getName();
            o.NodeData 
= RootDNode.getDepartID();
            newNode(o);

            
        }

        
public void newNode(TreeNode ParentNode)
        
{
            Fiberxon.HR.Biz.DeparmentNode dnode 
= new DeparmentNode(ParentNode.NodeData);
            
if(dnode.IsRoot)
            
{
                thisNode.Nodes.Add(ParentNode);
            }

            
            
            
if(!dnode.IsLeaf)
            
{
                
for(int i=0;i<dnode.SubDepartmentCount;i++)
                
{
                    TreeNode node 
= new TreeNode();//每次都被初始化调了,
                    node.Text 
= dnode.GetSubNodes[i].getName();
                    node.NodeData 
= dnode.GetSubNodes[i].getDepartID();
                    ParentNode.Nodes.Add(node);
            
//        thisNode2 = new TreeNode();
            
//        thisNode2 = node;
                    newNode(node);
                }

            }

            
else
            
{                
                    
return;
                
                
                
            }


        
//thisNode.Nodes.Add(ParentNode);
            
        
        
            



        }


每次由于在循环中
  TreeNode node = new TreeNode() //初始化掉了。
所以,节点最后返回并不是自己想要的层层嵌套的递归,
而是只有一个值。

===============================
Update by rock jing  on 2004-9-18
===============================
那么怎么解决呢?
我想是这么一个问题,那就是创建的节点必须保持存在,不能被重新new或者是覆盖。
如果节点有50个,则必须创建50个TreeNode,
并且在递归的时候 ,将子节点加入到父节点去。



posted on 2004-09-17 15:10  一望无际的南  阅读(476)  评论(0编辑  收藏  举报

导航