错误的递归
为了能在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,
并且在递归的时候 ,将子节点加入到父节点去。