C# TreeView 递归问题 求教
privatevoidmyTv(intparentId,TreeNodeupNode){DataViewdv=newDataView(dt);dv.RowFilter="...
private void myTv(int parentId, TreeNode upNode)
{
DataView dv = new DataView(dt);
dv.RowFilter = "i_ParentId =" + parentId;
for(int i = 0;i < dv.Count;i++)
{
TreeNode newNode = tvType.Nodes.Add(dv[i][1].ToString());
myTv(Int32.Parse(dv[i][0].ToString()), newNode);
}
}
数据表是
Id Name ParentId
1 商品 0
2 用品 1
3 食品 1
4 纸巾 2
5 杯子 2
6 风扇 2
7 大米 3
8 小米 3
9 芝麻 3
我想知道上面代码的执行顺序是怎么样的。。
其实我主要是不明白for循环里的myTv是怎么执行的..
比如for循环要执行2次,那myTv执行一次就跳出去了,怎么执行第二次? 展开
{
DataView dv = new DataView(dt);
dv.RowFilter = "i_ParentId =" + parentId;
for(int i = 0;i < dv.Count;i++)
{
TreeNode newNode = tvType.Nodes.Add(dv[i][1].ToString());
myTv(Int32.Parse(dv[i][0].ToString()), newNode);
}
}
数据表是
Id Name ParentId
1 商品 0
2 用品 1
3 食品 1
4 纸巾 2
5 杯子 2
6 风扇 2
7 大米 3
8 小米 3
9 芝麻 3
我想知道上面代码的执行顺序是怎么样的。。
其实我主要是不明白for循环里的myTv是怎么执行的..
比如for循环要执行2次,那myTv执行一次就跳出去了,怎么执行第二次? 展开
2个回答
展开全部
在使用treeview的时候,递归是为了加载节点的子节点,之道该节点没有子节点。
而递归里面的那个for循环是为了把某个节点的所有子节点全部加载完毕。
要理解你上面的代码其实很简单,先把那个递归的去掉,也就是没有递归,那么结果应该很简单,然后回过头来看看 递归是在什么时候调用的。
我想你应该能够理解了
而递归里面的那个for循环是为了把某个节点的所有子节点全部加载完毕。
要理解你上面的代码其实很简单,先把那个递归的去掉,也就是没有递归,那么结果应该很简单,然后回过头来看看 递归是在什么时候调用的。
我想你应该能够理解了
追问
理解了..
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
按你的表,执行顺序是
调用 myTv(0, node),for循环执行2次
第1次调用myTv(2, node) 这里又递归调用3次,分别为myTv(4, node)和5,6
第2次调用myTv(3, node) 这里又递归调用3次,分别为myTv(7, node)和8,9
在调用myTv(4, node)到myTv(9, node)时,因为dv.Count为空,就一级级返回上层,明白吗
调用 myTv(0, node),for循环执行2次
第1次调用myTv(2, node) 这里又递归调用3次,分别为myTv(4, node)和5,6
第2次调用myTv(3, node) 这里又递归调用3次,分别为myTv(7, node)和8,9
在调用myTv(4, node)到myTv(9, node)时,因为dv.Count为空,就一级级返回上层,明白吗
追问
知道了..
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询