表结构:  
id  名称    类型1  类型2  类型3  父id  
1      name    lx11  lx21    lx31    0  
2      name1  lx12  lx22    lx32    0  
3      name2  lx11  lx21    lx31    1  
 
现在要排成这样的树:  
类型1  
  |____类型2  
          |______类型3  
                    |________名称  
                               |_____子名称  
即:  
 
lx11  
| |____lx21  
|       |____lx31  
|              |______name  
lx12                    |_____name2  
  |____lx22  
         |____lx32  
               |______name1

解决方案 »

  1.   

    楼主,这有何难
    1) 递归 (这个应该会吧)
    2) 每个节点的特点: name 与 lx11 lx21 lx31同级
      

  2.   

    如果是
    name
    |  |___name1
    name2
    我知道递归.但上面这种格式递归从什么开始呢?
      

  3.   

    楼主先按简单思路实现如下
    name
    | |___name1
    name2设name1节点为  treeNode1;那么,加入同级节点,只要
    treeNode1.Parent.Nodes.Add("lx11");
    treeNode1.Parent.Nodes.Add("lx21");
    treeNode1.Parent.Nodes.Add("lx31);没加一点难度啊
      

  4.   

    不是呀.类型1,类型2,类型3之间没有父子级关系的.
    有父子关系的只是name
      

  5.   

    用最笨的方法作的(虽找到一定的规律性但是由其中有对库的查询就不知道如何写成递归了的形式了)private void Form1_Load(object sender, System.EventArgs e)
    {
    oleDbConnection1.Open ();
    oleDbDataAdapter1=new System.Data.OleDb.OleDbDataAdapter ("select * from lx where parentname=0",oleDbConnection1);oleDbDataAdapter1.Fill (dataSet11,"lx");for( i=0;i<dataSet11.Tables ["lx"].Rows .Count ;i++)
     {
     
    TreeNode tn=new TreeNode(dataSet11.Tables ["lx"].Rows[i]["type1"].ToString ());
    TreeNode tn1=new TreeNode(dataSet11.Tables ["lx"].Rows[i]["type2"].ToString ());
    TreeNode tn2=new TreeNode(dataSet11.Tables ["lx"].Rows[i]["type3"].ToString ());
    TreeNode tn3=new TreeNode (dataSet11.Tables ["lx"].Rows [i]["name"].ToString ());oleDbDataAdapter1=new System.Data.OleDb.OleDbDataAdapter ("select * from lx where parentname="+dataSet11.Tables ["lx"].Rows[i]["id"].ToString (),oleDbConnection1);

    oleDbDataAdapter1.Fill (dataSet21,"lx");
    TreeNode tn4;
    if(dataSet21.Tables ["lx"].Rows .Count !=0)
    {
    tn4=new TreeNode (dataSet21.Tables ["lx"].Rows [0][1].ToString ());
     tn3.Nodes .Add (tn4);
    }
    dataSet21.Tables ["lx"].Clear() ;
    tn2.Nodes .Add (tn3);
    tn1.Nodes .Add (tn2);
    tn.Nodes .Add (tn1);
    treeView1.Nodes .Add (tn);
    }
    }
    你看一下你能把它改写成递归的形式吗?