如何根据数据库的内容来生成一棵树,希望给出数据库设计结构,和实现代码,不甚感激!

解决方案 »

  1.   

    private void treeviewint()
    {
    this.treeView1.Nodes.Clear();
    nodeRoot=new TreeNode();
    nodeRoot.Tag="ROOT";
    nodeRoot.Text="所有字典类型";
    TreeNode n1=new TreeNode();
    TreeNode n2=new TreeNode();
    TreeNode n3=new TreeNode();string sql;
    DataTable dt1=new DataTable();//数据字典
    n1.Tag =1;
    n1.Text="常规数据"; //加入子节点
    string sql1="select  msgType from tb_sys_messages group by msgType";
    DataTable dt=_dbo.GetDataTable(sql1,"tb_sys_messages_group");
    _dbo.DataTableRemove();for(int i=0;i<dt.Rows.Count;i++)
    {
    TreeNode msgType=new TreeNode();
    msgType.Tag ="1"+dt.Rows[i][0].ToString();
    msgType.Text=dt.Rows[i][0].ToString();
    n1.Nodes.Add(msgType);
    }
    nodeRoot.Nodes.Add(n1);//行政区域
    n2.Tag =2;
    n2.Text="行政区域";
    //加入子节点
    sql1="select RegionID,RegionName from tb_regions  where right(RegionID,4)='0000'";
    dt.Clear();
    dt=_dbo.GetDataTable(sql1,"tb_regions");
    _dbo.DataTableRemove();for(int i=0;i<dt.Rows.Count;i++)
    {
    TreeNode RegionName=new TreeNode();
    RegionName.Tag ="2"+dt.Rows[i][0].ToString().Substring(0,2);
    RegionName.Text=dt.Rows[i][1].ToString();
    //加入地区
    sql="select RegionID,RegionName from tb_regions where right(RegionID,2)='00' and left(RegionID,2)='"+dt.Rows[i][0].ToString().Substring(0,2)+"' and RegionID<>'"+dt.Rows[i][0].ToString()+"'";
    dt1=_dbo.GetDataTable(sql,"tb_regions1");
    _dbo.DataTableRemove();
    for(int j=0;j<dt1.Rows.Count;j++)
    {
    TreeNode RegionName1=new TreeNode();
    RegionName1.Tag ="2"+dt1.Rows[j][0].ToString().Substring(0,4);
    RegionName1.Text=dt1.Rows[j][1].ToString();
    RegionName.Nodes.Add(RegionName1);
    }
    dt1.Clear();
    n2.Nodes.Add(RegionName);
    }
    dt.Clear();            
    nodeRoot.Nodes.Add(n2);//草原类型
    n3.Tag =3;
    n3.Text="土壤类型";
    nodeRoot.Nodes.Add(n3);
    nodeRoot.Expand();//结点是否展开
    this.treeView1.Nodes.Add( nodeRoot);
    }这是我刚做的项目里面的一段,希望对楼主有所帮助,至于数据库结构就不用给出了吧,猜也能猜个差不多,别忘了给我分数哦
      

  2.   

    在数据库中,需要设置两个必须的字段。id和parentid。然后用递归绑定到树就可以。只有一个思路,具体算法自己写吧。
      

  3.   

    不会吧,应该使用DataSet就可以了
    DataSet ds = ..treeView1.DataBindings = ds;
    这样就是一棵树了,而且可以多个表,形成过个根