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

  • 相关阅读:
    将.net core api 部署成windows服务
    根据2个经纬度点,计算这2个经纬度点之间的距离(通过经度纬度得到距离)
    .NET 基础知识 单文件部署和可执行文件 剪裁独立部署和可执行文件
    通过 InnoSetup 美化安装界面
    拼凑一个ABP VNext管理后台拼凑一个ABP VNext管理后台
    互联网软件的安装包界面设计Inno setup
    weinre  远程实时调试手机上的Web页面 JAVASCRIPT远程调试
    asp.net core web应用以服务的方式安装运行
    用 vue2 和 webpack 快速建构 NW.js 项目
    谷歌插件抓包 similarweb抓包
  • 原文地址:https://www.cnblogs.com/ljs-13/p/12109165.html
Copyright © 2011-2022 走看看