这个递归方法昨天想了一天也没明白,找不到递归的出口,我这郁闷。
请教了同事后再明白。现在写下来备忘!
原来递归方法中的循环结束了,递归就出来了。我感觉还有更好的方法,不过没时间想了。
---------------------------------------------------------------------------------------------
private void FromLoad() { this.trvTask.Nodes.Clear(); //构造根节点 TreeNode rootNode = new TreeNode(); rootNode.Text = info.ProjectName; rootNode.Tag = "null"; DataTable dt = *** ; //数据源 if (dt == null) return; //调用递归方法为 rootNode 添加子节点 this.InitTree(rootNode, dt, "null"); this.tree.Nodes.Add(rootNode); this.tree.Nodes[0].ExpandAll(); } /// <summary> /// 递归构造树节点 /// </summary> /// <param name="rootnode">根节点</param> /// <param name="table">数据源</param> /// <param name="parentid">父节点编号</param> public void InitTree(TreeNode rootnode,DataTable table,string parentid) { if (table == null || table.Rows.Count == 0) return; int count = table.Rows.Count; DataRow row = null; TreeNode newNode = null; for (int i = 0; i < count; i++) { row = table.Rows[i]; if (parentid != Utilities.sigleton.GetObject(row["PARENTID"])) continue;
newNode = new TreeNode(); newNode.Text = Utilities.sigleton.GetObject(row["PJTASKNAME"]); newNode.Tag = Utilities.sigleton.GetObject(row["TABLEID"]); string id = Utilities.sigleton.GetObject(row["TABLEID"]); if (Utilities.sigleton.GetObject(row["associateCount"]) != "0") newNode.Checked = true;
rootnode.Nodes.Add(newNode); InitTree(newNode, table, id); } }
转载于:https://www.cnblogs.com/xxj-jing/archive/2008/11/20/2890121.html
相关资源:各显卡算力对照表!