zoukankan      html  css  js  c++  java
  • C# 中采用treeview递归生成目录树(Winform和Webform两种)

    部门表:

    课程表:


    查询结果结构:


    数据结构分析,部门分为部门id和部门名称;课程分为课程id,课程名称,课程路径和课程所属部门。
    要求以部门为父节点展示不同部门下的课程。


    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);
    }
    }

    }
    ————————————————
    版权声明:本文为CSDN博主「Goenken」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/sinat_35187039/article/details/82631107

  • 相关阅读:
    Java 获取字符串指定下标位置的值 charAt()
    Java 获取字符串长度 length()
    Java 字符串拼接 StringBuilder() StringBuffer
    ngBind {{}} ngBindTemplate
    什么是:before和:after?
    滚屏加载
    JavaScript 高程三读书笔记;
    angularjs 构建主页 内置过滤器、日期的格式化
    Angular实现递归指令
    JQuery获取浏览器窗口的可视区域高度和宽度,滚动条高度
  • 原文地址:https://www.cnblogs.com/ljs-13/p/12109165.html
Copyright © 2011-2022 走看看