欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C# 中采用treeview递归生成目录树(Winform和Webform两种)

程序员文章站 2022-06-08 14:03:17
...

部门表:
C# 中采用treeview递归生成目录树(Winform和Webform两种)
课程表:
C# 中采用treeview递归生成目录树(Winform和Webform两种)
查询结果结构:
C# 中采用treeview递归生成目录树(Winform和Webform两种)
数据结构分析,部门分为部门id和部门名称;课程分为课程id,课程名称,课程路径和课程所属部门。
要求以部门为父节点展示不同部门下的课程。
C# 中采用treeview递归生成目录树(Winform和Webform两种)

Winform采用treeview递归生成目录树

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
private void AddTree(int d_id, DataTable dt, TreeNode PNode)
        {
            foreach (DataRow dr in dt.Rows)
            {
                TreeNode node = new TreeNode();
                node.Text = dr["Dept_name"].ToString();
                node.Name = dr["Dept_id"].ToString();
                if (treeView1.Nodes.Count == 0)
                {
                    treeView1.Nodes.Add(node);
                    treeView1.ExpandAll();
                }
                else
                {
                    int count = treeView1.Nodes.Count - 1;
                    System.Diagnostics.Debug.WriteLine("TreeView1_Node = " + treeView1.Nodes[count].Name);
                    if (!treeView1.Nodes[count].Name.Equals(node.Name))
                    {
                        treeView1.Nodes.Add(node);
                        treeView1.ExpandAll();
                    }
                }
                DataView dv = new DataView(dt);
                dv.RowFilter = "Dept_id = " + dr["Dept_id"].ToString();
                foreach (DataRowView drv in dv)
                {
                    TreeNode childNode = new TreeNode();
                    childNode.Text = drv["Course_name"].ToString();
                    childNode.Name = drv["Course_id"].ToString();
                    childNode.Tag = drv["Course_path"].ToString();
                    System.Diagnostics.Debug.WriteLine("childNode_Tag = " + childNode.Tag);
                    node.Nodes.Add(childNode);
                    treeView1.ExpandAll();
                }
            }
        }

webform采用treeview递归生成目录树

private void AddTree(int d_id, DataTable dt, TreeNode PNode)
{
            foreach (DataRow dr in dt.Rows)
            {
                //新建节点
                TreeNode node = new TreeNode();
                //给当前节点赋值
                node.Text = dr["Dept_name"].ToString();
                node.Value = dr["Dept_id"].ToString();
                //判断当前是否存在根节点,不存在根节点,直接添加
                if (TreeView1.Nodes.Count == 0)
                {
                    TreeView1.Nodes.Add(node);
                    node.Expanded = true;
                }
                else
                {
                    int count = TreeView1.Nodes.Count - 1;
                    System.Diagnostics.Debug.WriteLine("TreeView1_Node = " + TreeView1.Nodes[count].Text);
                    //判断treeview中是否已经存在当前结点(node.text),不存在则添加,已经存在则不添加
                    if (!TreeView1.Nodes[count].Text.Equals(node.Text))
                    {
                        TreeView1.Nodes.Add(node);
                        node.Expanded = true;
                    }                  
                }
                DataView dv =  new DataView(dt);
                //过滤得到按部门id分类的结果集
                dv.RowFilter = "Dept_id = " + dr["Dept_id"].ToString();
                //遍历过滤后的结果集
                foreach (DataRowView drv in dv  )
                {
                    //新建子节点
                    TreeNode childNode = new TreeNode();
                    //childNode.Text = dt.Rows[i]["Course_name"].ToString();
                    //childNode.Value = dt.Rows[i]["Course_id"].ToString();
                    //childNode.NavigateUrl = dt.Rows[i]["Course_path"].ToString();
                    childNode.Text = drv["Course_name"].ToString();
                    childNode.Value = drv["Course_id"].ToString();
                    childNode.NavigateUrl = drv["Course_path"].ToString();
                    //将子节点添加到当前父节点下
                    node.ChildNodes.Add(childNode);
                }
            }

        }
相关标签: C#