treeview无限树,递归 有些困扰 急,songsu见
最近也需要这个功能,于是在网上找了一番,发现一个帖子跟我需求差不多,但是我看了还是有疑惑,希望大家能帮忙解决下。
原帖:http://topic.csdn.net/u/20070910/11/70fb5aac-1e94-4a3e-8927-0ef131c31041.html
songsu的回答:
ID PID CName
注:
PID:父ID,例如武汉属于湖北,则数据库代码如下
1 0 湖北
2 1 武汉
CName:城市名称
#region 填充树节点
/// <summary>
/// 填充树节点
/// </summary>
/// <param name= "tid "> 父ID </param>
/// <param name= "team "> 父数据表 </param>
/// <param name= "c "> 父节点集合 </param>
static void FillTreeView(string tid,ref DataTable team,TreeNodeCollection c)
{
DataRow[] teamRows = team.Select( "PID= " + tid); //搜索所有子组
int l = teamRows.Length;
//加载子分组
for(int i = 0 ; i < l ; ++i)
{
TreeNode n = new TreeNode(teamRows[i][2].ToString(),0,0);
c.Add(n);
CKlTree.FillTreeView(teamRows[i][0].ToString(),ref team,n.Nodes);
}
}
#endregion
注意:CKlTree为你的树控件对象。
我理解也只能理解少部分, 递归也是昨天才看的,大概就是函数自身调用自身,
上面写了 CKlTree是自己的树控件,但我在创建方法的时候如何把这个控件带进去啊?
求解,勿笑,对递归不怎么理解。 也别来说你基础差这类的, 我是在问啊,谢谢大家,主要有点急,不然就自己慢慢悟了。。
------解决方案--------------------
CKlTree 不是控件对象,而应该是 FillTreeView 这个方法所在的类的类名,去掉就行了,第二个参数的 ref 修饰也是多余
调用时,窗体上要有一个 TreeView 控件,查询出数据到 DataTable 中
FillTreeView(0, ref 查询出的数据表, 窗体TreeView.Nodes);