这涉及到无限级分类数据库 aaa
id name    c d  (c 代表是否父节点 d代表是否末级 1是 0不是)
1  电脑    0 1
2  手机    0 1
3  nokia   2 0
4  samsun  2 0
5   饮料   0 1
6   橙汁   5 0
7   雪碧   5 0
8   可乐   5 0select * form aaa  把这个结果集用DATATABLE返回我在WINFROM里TreeView以树的形式表现            TreeMenu.Nodes.Clear();
            DataTable dtTree = GetAllTreeInfo();//数据库aaa传来的结果集
            foreach (DataRow dr in dtTree.Rows)
            {
                TreeNode tmpNode = new TreeNode();
                tmpNode.Tag = dr["id"].ToString();
                tmpNode.Text = dr["name"].ToString();                if (dr["c"].ToString() == "0")
                {
                    TreeMenu.Nodes.Add(tmpNode);
                    if (dr["d"].ToString() == "0")
                    {
                     //子节点这里代码不知道怎么写了 高手指点              
                     tmpNode.Nodes.Add(dr["name"].ToString());   
                        
                    }                }

解决方案 »

  1.   

    LoadTrea(dtTree ,TreeMenu)private void LoadTrea(DataTable dt, TreeNode ParentNode)
    {
        TreeNode tempNode;    for (int i = 0; i < dt.Rows.Count; i++)
        {        if (ParentNode == null)
            {
                tempnode = tvwProduct.Nodes.Add(dt.Rows[i]["Name"].ToString());
                tempNode.Tag = dt.Rows[i]["id"].ToString();
            }
            else
            {
                if (dt.Rows[i]["c"].ToString() == ParentNode.Tag)
                {
                    tempnode = ParentNode.Nodes.Add(dt.Rows[i]["Name"].ToString());            }
            }
            LoadTrea(dt, tempNode);
            
        }
    }
      

  2.   

    if (0 == (int)dr[2])
                    {
                        TreeNode tmpNode = new TreeNode();
                        tmpNode.Text = dr[1].ToString();
                        tmpNode.Tag = dr[0];
                        treeView1.Nodes.Add(tmpNode);
                    }
                    else
                    {
                        TreeNode tmpNode = new TreeNode();
                        tmpNode.Text = dr[1].ToString();
                        tmpNode.Tag = dr[0];
                        for (int i = 0; i < treeView1.Nodes.Count; i++)
                        {
                            if ((int)dr[2] == (int)treeView1.Nodes[i].Tag)
                            {
                                treeView1.Nodes[i].Nodes.Add(tmpNode);
                                break;
                            }
                        }
                    }
      

  3.   

    应该用个递归方法winer2006(我心飞扬) 的会可行