递归算法问题,请高手解决,谢谢,在线等!!! 需求:在数据库中建立一个部门表:Department,其中有两个字段,一个是id保存其自身的编号,一个是pid保存它的父编号,我想在treeview控件中显示出来部门的隶属关系,请问如何写一个递归函数来解决这个问题,其他方法也可以,谢谢!!!注意:要求部门可以动态添加,并且部门的层次不确定!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 参看http://blog.csdn.net/knight94/archive/2006/05/01/704281.aspx private void createNodes(TreeNodeCollection nodes,DataTable source,string curID) { string filter = "[pid] = '"+curID+"'"; DataRow[] rows = source.Select(filter); foreach(DataRow dr in rows) { TreeNode node = new TreeNode(); node.Text = dr["部门名称"].ToString(); nodes.Add(node); this.createNodes(node.Nodes,source,dr["id"].ToString()); } } DataTable dt = new DataTable();//select * from departmentthis.treeView1.Nodes.Clear();this.createNodes(this.treeView1.Nodes,dt,"0");***************************************************private void createNodes(TreeNodeCollection nodes,DataTable source,string curID) { string filter = "[pid] = '"+curID+"'"; DataRow[] rows = source.Select(filter); foreach(DataRow dr in rows) { TreeNode node = new TreeNode(); node.Text = dr["部门名称"].ToString(); nodes.Add(node); this.createNodes(node.Nodes,source,dr["id"].ToString()); } } TREEVIEW加载目录最好使用XML,那样维护起来方便 to:Eddie005(♂) №.零零伍 (♂) ( )为什么用你的方法,只显示最后一个级别的节点呀谢谢 to:Eddie005(♂) №.零零伍 (♂) ( )问题已经解决就是用的你的函数是我写错了谢谢你 Eddie005的方法是取出所有然后再Select选择,对于数据量不大的菜单,是很好的方法,但是如果数据量太大,一定程度上会影响效率,可以采用先绑定根节点,点击后再加载的方法. C#串口求助 设置系统打印对话框不可见 WPF加了动画就慢~ 输入两个数,如果两个数输入都大于3则请重输入,否则做其他事,程序怎么写 樹控件的綁定 请教一初级问题! 如何在子窗体里 关闭另一个子窗体 动态判断若干个textbox是否为空 哪有c#的大量源代码下载 关于CType在C#中的写法,解决后马上结贴. 如何在c#.net中屏蔽掉一些Windows消息 (没人能回答,再问~~)onKeyDown函数用来相应按键消息,就是说某个键一按下就执行响应函数,但是如果我想询问当前时刻键盘的某个键是
http://blog.csdn.net/knight94/archive/2006/05/01/704281.aspx
{
string filter = "[pid] = '"+curID+"'";
DataRow[] rows = source.Select(filter);
foreach(DataRow dr in rows)
{
TreeNode node = new TreeNode();
node.Text = dr["部门名称"].ToString();
nodes.Add(node);
this.createNodes(node.Nodes,source,dr["id"].ToString());
}
}
this.treeView1.Nodes.Clear();
this.createNodes(this.treeView1.Nodes,dt,"0");***************************************************
private void createNodes(TreeNodeCollection nodes,DataTable source,string curID)
{
string filter = "[pid] = '"+curID+"'";
DataRow[] rows = source.Select(filter);
foreach(DataRow dr in rows)
{
TreeNode node = new TreeNode();
node.Text = dr["部门名称"].ToString();
nodes.Add(node);
this.createNodes(node.Nodes,source,dr["id"].ToString());
}
}
为什么用你的方法,只显示最后一个级别的节点呀
谢谢
问题已经解决
就是用的你的函数
是我写错了
谢谢你
Eddie005的方法是取出所有然后再Select选择,对于数据量不大的菜单,是很好的方法,但是如果数据量太大,一定程度上会影响效率,可以采用先绑定根节点,点击后再加载的方法.