public static void DeleteDept(int id)
{
Department d=new Department(id);
if (d!=null)
{
d.Delete(); //delete child department
if (HasChildDept(deptid))
{
IList l=Department.FindDeptBySuperior(deptid);
for (i=0;i<l.Count;i++)
{
int ID=((Department)l[i]).Dept_ID;
DeleteDept(ID);
}
}
}
}这种方法肯定行不通的,必须先删除最后的节点,然后往上删,如何得到最后一级的节点?

解决方案 »

  1.   

    public static void DeleteDept(int id)
    {
    Department d=new Department(id);
    if (d!=null)
    {

    //delete child department
    if (HasChildDept(deptid))
    {
    IList l=Department.FindDeptBySuperior(deptid);
    for (i=0;i<l.Count;i++)
    {
    int ID=((Department)l[i]).Dept_ID;
    DeleteDept(ID);
    }
    }
                      //确信子节点删除后,再删除当前节点;
                      d.Delete(); }
    }
      

  2.   

    写一个递归,当其自节点为null的时候就遍历到了叶子节点了.这个其实和你构建tree的时候是类似的.
      

  3.   

    不用这么麻烦,直接用:
    TreeView.Nodes.Clear()
      

  4.   

    small_roc(小飞), 正解,谢谢!