遍历Treeview每个节点并初始化(C#)
搞了好久,哎,C#的一些控件用起来还没习惯,所以折腾啊。
TreeView的形成,必然要初始化,数据记录是从数据库中取得的,那么要先取再遍历。介绍下心得吧。
首先,数据预期显示结果如下
其次,数据库结构如下
需要解释的是,c_id为自增长的主键,也就是即将要用到的TV节点的TAG,c_pid是父节点的TAG
数据库内容如下
初始化显示的代码如下,用了递归思想
2 MySqlCommand myCmd = new MySqlCommand();
3 MySqlDataReader myDr = null;//数据库连接
4 public usInstallAdd(MDIParent m, GlobalClass g)
5 {//构造函数
6 mdi = m;
7 globalvar = g;
8 InitializeComponent();
9 tv_Pro.Dock = DockStyle.Left;
10
11 //load data
12 mysqlconn = new MySqlConnection(globalvar.strmysqlconnstr);
13 mysqlconn.Open();
14 myCmd.Connection = mysqlconn;
15 string strSQl = @"select *from t_pro";
16 myCmd.CommandText = strSQl;
17 myCmd.CommandType = CommandType.Text;
18 myDr = myCmd.ExecuteReader();
19
20 TreeNode pnode = new TreeNode();
21 pnode.Text = "项目管理";
22 pnode.Tag = 0;
23 tv_Pro.Nodes.Add(pnode);//先初始化一个节点
24
25 while (myDr.Read())
26 {
27 TreeNode node = new TreeNode();
28 node.Text = myDr["c_name"].ToString();
29 node.Tag = myDr.GetInt32(0);
30 string strValue = myDr["c_pid"].ToString();
31 if (pnode != null)
32 {//遍历查询并添加
33 fun_FindNode(pnode, strValue, node);
34 }
35 }
36 tv_Pro.ExpandAll();
37 myDr.Close();
38 myCmd.Dispose();
39 mysqlconn.Close();
40 }
41 //遍历函数如下
42 private TreeNode fun_FindNode(TreeNode tnParent, string strValue, TreeNode tnc)
43 {
44 //遍历TV
45 if (tnParent == null)
46 return null;
47 if (tnParent.Tag.ToString() == strValue)
48 {
49 tnParent.Nodes.Add(tnc);
50 return tnParent;
51 }
52 TreeNode tnRet = null;
53 foreach (TreeNode tn in tnParent.Nodes)
54 {
55 tnRet = fun_FindNode(tn, strValue, tnc);
56 if (tnRet != null)
57 {
58 //tnRet.Nodes.Add(tnc);
59 break;
60 //continue;
61 }
62 }
63 return tnRet;
64 }
转载于:https://www.cnblogs.com/lifw/articles/1609783.html
遍历Treeview每个节点并初始化(C#)相关推荐
- 使用递归方法遍历TreeView的节点如配置则勾选
自己在网上找了一段时间都没有找到取自数据库的值与TreeView中的节点值进行对比如匹配则勾选中CheckBox的资料,后面自己写了一个递归方法实现,现在记录起来以备需要时使用.在没写这递归方法前如果 ...
- 遍历TreeView
遍历TreeView 有两种遍历方式: 一:使用递归遍历 //my_condition条件 public void FindNodeFunc(string my_condition) {TreeVie ...
- java 遍历xml子节点,Axiom解析XML,axiomxml,1、遍历XML全部节点,
Axiom解析XML,axiomxml,1.遍历XML全部节点, 1.遍历XML全部节点,将节点放入Map返回2.遍历XML当前父节点下的所有子节点 [Java]代码import java.util. ...
- python 遍历xml所有节点
1.xml文件 2.代码 #coding:utf-8 import xml import xml.etree.ElementTree as ET""" 实现从xml文件中 ...
- TreeView查获节点并选中节点
TreeView查获节点并选中节点如果有多个节点则会继续查找下一个节点 支持关键字搜索 private void SearchNodes(string SearchText, TreeNode Sta ...
- python里遍历筛选xml文件_python xml.etree.ElementTree遍历xml所有节点实例详解
python xml.etree.ElementTree遍历xml所有节点 XML文件内容: 代码: #-*- coding: UTF-8 -*- # 从文件中读取数据 import xml.etre ...
- 案例 TreeView动态控制节点 c# 1614264758
案例 TreeView动态控制节点 c# 1614264758 需求一 添加节点与子节点 需求二 删除与清空节点
- C语言实现 二叉树 对任意类型数据的遍历、叶子节点统计、树高计算
本文主要实现C语言对二叉树的构造,可存储所有类型数据,实现数据域的遍历,本文主要介绍递归的遍历方法,含详细图文:以及树高.叶子节点的计算等. 1 二叉树构造 typedef struct Tree / ...
- 数据结构 - 二叉排序树BST(创建、遍历、删除节点)
数组与链表区别: 二叉排序树的创建和遍历 代码实现 package tree.binarysorttree;public class BinarySortTreeDemo {public static ...
最新文章
- jsp空间流量是怎么计算的?
- 用 Flask 来写个轻博客 (7) — (M)VC_models 的关系(many to many)
- 下如何画出频率瀑布图_用maftools一行代码画出瀑布图
- 【Java算法】一天24小时中,时针和分针一共重合多少次?
- 面向消息的中间件 (Message-Oriented Middleware, MOM)
- Spring Boot 解决跨域Cors问题
- java设计模式迭代器模式_迭代器设计模式示例
- iOS通知的整理笔记
- [Unity]限制一个值的大小(Clamp以及Mathf)
- c语言求信源的信息熵,第二章-信源与信息熵(三)
- 软件工程之软件设计③(概要设计说明书,详细设计说明书)
- 带t2芯片的mac装linux,制作macOS系统盘超级简单,以及T2芯片的安装方法
- 有道云笔记linux使用教程,我是这么用有道云笔记的!
- 使用hibernate的@SQLDelete和@Where注解实现逻辑删除
- 智能眼镜现在是什么水平?
- 大学生如何合理利用计算机,大学生如何安排自己的课余时间?6招,学霸教会你正确使用手机...
- The specified module could not be found的解决办法
- dhl寄件邮编错了_DHL国际快递寄错国家怎么办?
- 在3D游戏中显示网页
- CV10 图像模糊(均值、高斯、中值、双边滤波)
热门文章
- python2 安装faiss-gpu 报错 faiss/faiss/python/swigfaiss.i:241: Error: Unable to find ‘faiss/impl/platfo
- RabbitMQ 入门系列(2)— 生产者、消费者、信道、代理、队列、交换器、路由键、绑定、交换器
- TVM适配NN编译Compiler缺陷
- HiCar基本功能介绍
- 英特尔® 至强® 平台集成 AI 加速构建数据中心智慧网络
- YOLO v1到YOLO v4(上)
- Python:Scrapy实战项目手机App抓包爬虫
- Java 数据类型转换
- 不支持打开非业务域名htts:....请重新配置
- 本地运行github上的vue2.0仿饿了么webapp项目