我的表 company 有总部门和分部门两个字段      分部门         总部门      审计一部       审计部
      审计二部       审计部
      财务一部       财务部
      财务二部       财务部显示效果为:审计部
--审计一部
--审计二部
财务部
--财务一部
--财务二部WinForm中的,不是web的,C#的,给段详细的代码,谢谢

解决方案 »

  1.   

      private void BindNodes()
            { //绑定节点
              
                SqlDataReader dr = zhBB.dr_schoolInfo("tab_school");  //查询学校信息表
                if (dr.Read())
                {
                    this.treeView1.Nodes.Add(dr ["schoolName"].ToString ());   //添加根节点
                    dr.Close();
                    DataSet ds = zhBB.selectDS();
                    for (int k = 0; k < ds.Tables["tabName"].Rows.Count; k++)    //循环添加子节点,,年级
                    {
                        string strGrade=ds.Tables["tabName"].Rows[k]["studentGrade"].ToString();
                         TreeNode tnGrade=new TreeNode (strGrade);
                         DataSet dss = this.zhBB.ds_treeNodeClass(strGrade);
                         for (int i = 0; i < dss.Tables["tabName"].Rows.Count; i++)   //循环添加子节点,按年级添加班级
                         {
                             string strClass = dss.Tables["tabName"].Rows[i]["studentClass"].ToString();
                             tnGrade .Nodes .Add (strClass);    //在年级下面添加班级
                         }
                        this.treeView1.Nodes[0].Nodes.Add(tnGrade);    //在树下面添加年级  //int类型的
                    }
                }
                dr.Dispose();
                
            }
      

  2.   

      我这里是上次做学籍管理系统时搞的一个,先添加一个根节点--学校
      再在学校下面添加   年级-->再添加,班级   楼主可以看下,也可以留下QQ, QQ上好谈些。,
      

  3.   

     private void sss(TreeNodeCollection nodes)
            {
                foreach (TreeNode td in nodes)
                {
                    int l=td.Level;
                    string s="";
                    for(int i=0;i<l;i++)
                        s+="-";                this.richTextBox1.Text += s + td.Text + "\n";
                    if (td.Nodes.Count > 0) 
                        sss(td.Nodes);
                }
            }
      

  4.   


    DataTable dtble = new DataTable();
            //将表 company的数据取到 dtble;
            private void button1_Click(object sender, EventArgs e)
            {
                TreeNode treeNode1 = new TreeNode("审计部");
                treeView1.Nodes.Add(treeNode1);            TreeNode treeNode2 = new TreeNode("财务部");
                treeView1.Nodes.Add(treeNode1);
            }        private void CrateTreeView(TreeNode tmnode)
            {
                DataRow[] tmdr = dtble.Select("总部门='" + tmnode.Text.Trim()+"'");            foreach (DataRow dr in tmdr)
                {
                    TreeNode childnode = new TreeNode(dr["分部门"].ToString().Trim());
                    tmnode.Nodes.Add(childnode);                CrateTreeView(childnode);
                }
            }
      

  5.   


    [code=C#]
                DataTable table1 = new DataTable();
                DataTable table2 = new DataTable();
                SqlConnection cn = new SqlConnection("連接字符串");
                SqlDataAdapter da1 = new SqlDataAdapter("select distinct 總部門 from company", cn);
                SqlDataAdapter da2 = new SqlDataAdapter("select 分部門,總部門 from company", cn);
                da1.Fill(table1);
                da2.Fill(table2);
                da1.Dispose();
                da2.Dispose();
                cn.Dispose();            foreach (DataRow row in table1.Rows)
                {
                    TreeNode node = treeView1.Nodes.Add(row["總部門"].ToString());
                    DataRow[] depts = table2.Select("總部門='" + row["總部門"].ToString() + "'");
                    foreach (DataRow dept in depts)
                    {
                        node.Nodes.Add(dept["分部門"].ToString());
                    }
                }
                table1.Dispose();
                table2.Dispose();[/code]
      

  6.   

    Lz 要的好象是如何递归遍历TreeView.
    4楼加一句执行.  sss(this.treeView1.Nodes);
      

  7.   

    这种情况不需遍历,直接生成树 private void FillTView()
    {
    //根
    TView.BeginUpdate();
    TView.Nodes.Clear();
    TreeNode rootNode= new TreeNode("公司名称");
    TView.Nodes.Add (rootNode);

    string oldDept="公司名称";
    string curDept=""; TreeNode parentNode=rootNode;
    TreeNode childNode; DataTable dt=GetDataTable("SELECT 总部门, 分部门 FROM TableName ORDER BY 总部门, 分部门");
    for (int j=0;j<dt.Rows.Count;j++)
    {
    curDept=dt.Rows[j][0].ToString();
    if (curDept!=oldDept)
    {
    parentNode=new TreeNode();
    parentNode.Text =curDept;
    rootNode.Nodes.Add(parentNode);
    oldDept=curDept;
    }

    childNode=new TreeNode();
    childNode.Text =dt.Rows[j][1].ToString();
    parentNode.Nodes.Add (childNode);
    }
    TView.EndUpdate();
    }
      

  8.   

    这种情况不需遍历,直接生成树 private void FillTView() 

    //根 
    TView.BeginUpdate(); 
    TView.Nodes.Clear(); 
    TreeNode rootNode= new TreeNode("公司名称"); 
    TView.Nodes.Add (rootNode); string oldDept="公司名称"; 
    string curDept=""; TreeNode parentNode=rootNode; 
    TreeNode childNode; DataTable dt=GetDataTable("SELECT 总部门, 分部门 FROM TableName ORDER BY 总部门, 分部门"); 
    for (int j=0;j <dt.Rows.Count;j++) 

    curDept=dt.Rows[j][0].ToString(); 
    if (curDept!=oldDept) 

    parentNode=new TreeNode(); 
    parentNode.Text =curDept; 
    rootNode.Nodes.Add(parentNode); 
    oldDept=curDept; 
    } childNode=new TreeNode(); 
    childNode.Text =dt.Rows[j][1].ToString(); 
    parentNode.Nodes.Add (childNode); 

    TView.EndUpdate();