skey            sCaption   sParentMenuCell   
mainmenu         主菜单                 
manual          子菜单1       mainmenu     
record          子菜单2       mainmenu
fax             子菜单3       mainmenu
hehe            子菜单1-1    manual
lala            子菜单1-1-1 hehe
caca            子菜单2-1    record这是数据库中的数据,最后在treeview控件中要显示
主菜单
   - 子菜单1
         - 子菜单1-1
             - 子菜单1-1-1
   -子菜单2
      -子菜单2-1
   -子菜单3
 其中关系是skey和  sParentMenuCell建立的,如何实现啊

解决方案 »

  1.   

    一样的例子:
    ----------------
    private void button3_Click(object sender, System.EventArgs e)
    { SqlConnection cnn=new SqlConnection("server=BEAR;user id=sa;initial catalog=123;persist security info=True;");
    cnn.Open();

    TreeNode node=new TreeNode();
    treeView1.Nodes.Add(ShowAllTree(0,cnn,node)); //根节是以PID为0标志的 cnn.Close();
    }private TreeNode ShowAllTree(int id,SqlConnection cnn,TreeNode node)
    { string sqlSelect = "SELECT id,pid FROM [1] where pid ='"+id+"'";
    SqlDataAdapter da = new SqlDataAdapter(sqlSelect,cnn);
    DataTable dt=new DataTable();
    da.Fill(dt);

    for(int i=0;i<dt.Rows.Count;i++)           
    {
    TreeNode newNode=new TreeNode(dt.Rows[i][0].ToString());
    node.Nodes.Add(newNode); int newID = (int)dt.Rows[i][0];; ShowAllTree(newID,cnn,newNode); //递归调用,将子结点ID当做下一当前结点ID }
    dt.Dispose();
    da.Dispose(); return node;
    }测试数据表1:
    id pid
    1 0
    2 1
    3 2
    4 3
    5 1
    6 0
    7 0
    8 6
      

  2.   

    http://community.csdn.net/Expert/topic/4228/4228878.xml?temp=.9974939
      

  3.   

    ShowAllTree方法的第一个参数就是最顶级的父节点的ID,也就是你的mainmenu的sParentMenuCell值,最好你为你的最顶级sParentMenuCell设置1个值。比如0
      

  4.   

    weisunding怎么递归法啊,教教我