递归方法填充树型目录(treeview)

这个递归方法昨天想了一天也没明白,找不到递归的出口,我这郁闷。

请教了同事后再明白。现在写下来备忘!

原来递归方法中的循环结束了,递归就出来了。我感觉还有更好的方法,不过没时间想了。

---------------------------------------------------------------------------------------------

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);
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值