我的代码 :
  public static string getParentname(int classid)
        {
            string parentname = "";
            DataTable dt1 = WebSys.NewsType("*", " where id=" + classid);
            if (dt1.Rows.Count > 0)
            {
                foreach (DataRow item in dt1.Rows)
                {
                    if (Convert.ToInt32(item["parent"]) == 0)
                    {
                        parentname += item["enname"].ToString()+"//";
                    }
                    else 
                    {
                        parentname += getParentname(Convert.ToInt32( item["id"]))+ item["enname"].ToString()+"//";
                    }
                }
            }            return parentname;
        }

解决方案 »

  1.   


    private void InitTree(TreeNodeCollection Nds,string parentId)
    {
    DataView dv=new DataView();
    TreeNode tmpNd;
    string intId;
    dv.Table=ds.Tables["tree"];
    dv.RowFilter="ParentId='" + parentId + "'" ;
    foreach(DataRowView drv in dv)
    {
    tmpNd=new TreeNode();
    tmpNd.Tag=drv["NodeId"].ToString();
    tmpNd.Text=drv["NodeName"].ToString();
    Nds.Add(tmpNd);
    intId=drv["ParentId"].ToString();
    InitTree(tmpNd.Nodes,tmpNd.Tag.ToString());
    }
    }  
      

  2.   

    千万别搞成死循环了~!这是需要注意的[align=center]*************************************************
    本内容使用CSDN小秘书回复
    每天回帖即可得10分可用分!
    *************************************************[/align]
      

  3.   


    public static string getParentname(int classid)
      {
      string parentname = "";
      DataTable dt1 = WebSys.NewsType("*", " where id=" + classid);
      if (dt1.Rows.Count > 0)
      {
      foreach (DataRow item in dt1.Rows)
      {
      if (Convert.ToInt32(item["parent"]) == 0)
      {
      parentname += item["enname"].ToString()+"//";
      }
      else  
      {
      parentname += getParentname(Convert.ToInt32( item["parent"]))+ item["enname"].ToString()+"//";//item["id"]改为item["parent"]
      }
      }
      }  return parentname;
      }
      

  4.   

    递归死循环,一般是无法到达结束条件
    if (Convert.ToInt32(item["parent"]) == 0)
                        {
                            parentname += item["enname"].ToString() + "//";
                        }
    这个达不到,则parent字段始终不等于0,逻辑没发现问题
    检查你的数据吧