我有三个数据表,其中代表学校系名的表departments其中有departmentid,departmentname,还有系下面的各个专业的表subjects,其中有subjectid,subjectname,departmentid,还有一个专业下面的班级的表class,其中有classid,classname,subjectid,如何实现系是第一级节点,专业是第二级节点,班级是第三级节点?
vs2005,mssqlserver2000

解决方案 »

  1.   

    ArrayList parent = new ArrayList();
                ArrayList child = new ArrayList();
                
                string[] a = null;            SqlConnection conn = new SqlConnection("server=.;database=db;uid=sa;password=");
                conn.Open();
                SqlCommand comm = new SqlCommand("select distinct [one] from [Table]", conn);
                SqlDataReader dr = comm.ExecuteReader();
                while (dr.Read())
                {
                    string temp = dr.GetString(0);
                    //this.treeView1.Nodes.Add(temp);
                    parent.Add(temp);
                }
                dr.Close();            for (int i = 0; i < parent.Count; i++)
                {
                    child.Clear();
                    //this.treeView1.Nodes.Add(parent[i].ToString());
                    SqlCommand comm2 = new SqlCommand("select distinct [two] from [Table] where [one]='" + parent[i].ToString() + "'", conn);
                    SqlDataReader dr2 = comm2.ExecuteReader();
                    while (dr2.Read())
                    {
                        string temp = dr2.GetString(0);
                        child.Add(temp);
                    }
                    dr2.Close();
                    TreeNode t = new TreeNode(parent[i].ToString());
                    //t.ImageIndex = -2;
                    
                    this.treeView1.Nodes.Add(t);
                    for (int j = 0; j < child.Count; j++)
                    {
                        //t.Nodes.Add(child[j].ToString());
                        for (int r = 0; r < child.Count; r++)
                        {
                            //child2.Clear();
                            SqlCommand comm3 = new SqlCommand("select distinct [three] from [Table] where [one]='"+parent[i].ToString()+"' and [two]='"+child[j].ToString()+"'",conn);
                            string str = comm3.ExecuteScalar().ToString();
                            a=str.Split(',');
                            
                        }
                        TreeNode t2 = new TreeNode(child[j].ToString());
                        t.Nodes.Add(t2);
                       
                        for (int temp = 0; temp < a.Length; temp++)
                        {
                            TreeNode t3 = new TreeNode(a[temp].ToString());
                            
                            t2.Nodes.Add(t3);
                        }
                    }
                    
                    
                }
    其中一级节点放在Parent里面,二级放在Child里面,三级放在a里面。LZ参考下
      

  2.   

    我每个表中关联的是ID,不是名字啊,并且在第三个表中只有第二个表的ID没有第一个表的ID,正如我开始所说的问题一样啊,这样读child节点时候每次都是读出一个来,都是最后一个,所以再添加第三级的节点就都添加错了,楼上能再给指点一下不?