我自己想的是处理数据库每一条数据,然后来插入子节点的子节点。

奈何没有插入子节点的子节点的办法,百度来百度去,一看全都是递归。

本来我是绝望的,

但是没办法,老板的需求不能驳回啊,于是就来ctrl c/ctrl v吧。

在网上查到了一个能看懂的,基本是原样copy了下来。

         private void SetTreeView()
{
//填充treeview
string sql = "select * from SupplierType";
DataTable dt = SQLHelp.GetDataTable(sql);
dataGridView.DataSource = dt; if (dt != null)
{
foreach (DataRow row in dt.Rows)
{
string id = row["SupplierTypeID"].ToString().Trim();
string name = "(" + id + ")" + row["SupplierTypeName"].ToString().Trim();
string fatherid = row["SupplierFatherTypeID"].ToString().Trim(); TreeNode node = new TreeNode(name);
node.Tag = id;
//在树中根据id来查找这个节点,如果没有找到,则说明这个节点是父节点,如果查找到这个节点,则返回,返回的节点为node节点的父节点
TreeNode parentNode = GetNodeByID(treeView, fatherid);
if (parentNode == null)
{
treeView.Nodes.Add(node);
}
else
{
parentNode.Nodes.Add(node);
}
}
} } private TreeNode GetNodeByID(TreeView treeView, string fatherid)
{
//根据id搜索节点
TreeNode result = null;
foreach (TreeNode node in treeView.Nodes)
{
if (node.Tag.ToString() == fatherid)
{
result = node;
break;
}
if (node.Nodes.Count > )
{
result = GetNodeByID(node, fatherid);
if (result != null)
{ break; }
}
}
return result;
} private TreeNode GetNodeByID(TreeNode parentNode, string fatherid)
{
//根据节点搜索子节点的节点
TreeNode result = null;
foreach (TreeNode node in parentNode.Nodes)
{
if (node.Tag.ToString() == fatherid)
{
result = node;
break;
}
if (node.Nodes.Count > )
{
result = GetNodeByID(node, fatherid);
if (result != null)
{ break; }
}
}
return result;
}

原理就是递归去寻找父元素,将加载好的节点向上层添加,

数据库中重点的数据就是,自己的ID,父类的ID,以及内容。

成果:

参考:http://www.cnblogs.com/wangshuai/archive/2010/07/21/1782522.html

WinForm 数据库无限填充树目录 treeView的更多相关文章

  1. C#:依据目录填充树视图

    #region 依据目录填充树视图 /// <summary> /// 依据文件夹目录,填充树视图 /// </summary> /// <param name=&quo ...

  2. Winform TreeList递归绑定树节点

    /// <summary> /// 绑定树目录 /// </summary> /// <param name="parentId">父ID< ...

  3. 【整理】iview Tree数据格式问题,无限递归树处理数据

    iview Tree数据格式问题,无限递归树处理数据 https://juejin.im/post/5b51a8a4e51d455d6825be20

  4. Ubuntu 下 Mariadb 数据库的安装和目录迁移

    Ubuntu 下 Mariadb 数据库的安装和目录迁移 1.简介 本文主要是 Ubuntu 下 Mariadb 数据库的安装和目录迁移,同样适用于 Debian 系统:Ubuntu 20.0.4 M ...

  5. Winform开发常用控件之TreeView菜单导航和权限用法

    TreeView一个很棒的控件,我们在做WEB开发时常常犯困的一个东东.当然这里介绍winform里面的用法唠. 先介绍几个属性吧,CheckBoxes设置为true的话树形节点前面会出现checkb ...

  6. 数据库索引 B+树

    问题1.数据库为什么要设计索引?索引类似书本目录,用于提升数据库查找速度.问题2.哈希(hash)比树(tree)更快,索引结构为什么要设计成树型?加快查找速度的数据结构,常见的有两类:(1)哈希,例 ...

  7. 数据库索引B+树

    面试时无意间被问到了这个问题:数据库索引的存储结构一般是B+树,为什么不适用红黑树等普通的二叉树? 经过和同学的讨论,得到如下几个情况: 1. 数据库文件是放在硬盘上,每次读取数据库都需要在磁盘上搜索 ...

  8. 黄聪:查看mysql数据库真正的data目录

    终于找到了mysql数据库data目录在哪里! 用show variables like 'datadir',可查看真正的data目录 原文:http://blog.csdn.net/dmz1981/ ...

  9. 如何知道PostgreSQL数据库下每个数据库所对应的目录

    base目录,这是所有数据库目录的父目录. 在base目录下第一层,每个目录就是一个数据库所对应的文件. 那么如何知道哪个目录对应哪个数据呢? 查询如下:先看数据库列表 [pgsql@localhos ...

随机推荐

  1. 【leetcode 简单】 第六十三题 使用队列实现栈

    使用队列实现栈的下列操作: push(x) -- 元素 x 入栈 pop() -- 移除栈顶元素 top() -- 获取栈顶元素 empty() -- 返回栈是否为空 注意: 你只能使用队列的基本操作 ...

  2. 差分约束系统+输出路径(I - Advertisement POJ - 1752 )

    题目链接:https://cn.vjudge.net/contest/276233#problem/I 题目大意:输入k和n,然后输入n行,每一次输入两个数,代表开端和结尾,如果这个区间内点的个数大于 ...

  3. 使用IntelliJ IDEA新建maven的javaWeb项目部署,启动访问index,jsp页面

    对于用惯了eclipse的人,idea其实还挺不一样的,也是摸索了很久,看了好多博客,这里就记录一下,以后肯定经常用!,不过使用熟练了,功能确实非常强大,真的牛! 1 新建maven项目,配置好目录结 ...

  4. Python标准库笔记(7) — copy模块

    copy-对象拷贝模块:提供了浅拷贝和深拷贝复制对象的功能, 分别对应模块中的两个函数 copy() 和 deepcopy(). 1.浅拷贝(Shallow Copies) copy() 创建的 浅拷 ...

  5. AndroidManifest.xml权限设置

      访问登记属性 android.permission.ACCESS_CHECKIN_PROPERTIES ,读取或写入登记check-in数据库属性表的权限 获取错略位置 android.permi ...

  6. 并行运行多个python虚拟机

    之前遇到一个问题,需要将场景服务这个模块拆分出来,用独立的一个线程去执行.使用独立的线程好处就是,逻辑写的可以相对简单粗暴点,不必考虑到大量的场景服务逻辑卡主线程的情况. 由于我们服务器之前是使用py ...

  7. MySQL5.7之多源复制&Nginx中间件(上)【转】

    有生之年系列----MySQL5.7之多源复制&Nginx中间件(上)-wangwenan6-ITPUB博客http://blog.itpub.net/29510932/viewspace-1 ...

  8. iframe内部刷新后跳转锚点

    开发过程中需要在iframe内容页中点击刷新按钮刷新页面并跳转至页面底部,编写js函数在url后面加上锚点名称#mao,但发现并未达到预期效果,通过测试发现锚点只有在第一次访问页面的时候才会生效,所有 ...

  9. 简易博客[ html + css ] 练习

    1. 前言 通过使用 html + css 编写一个简易的博客作为入门练习 2. 代码及实现 2.1 目录结构 2.2 代码部分 <!DOCTYPE html> <html lang ...

  10. 程序设计分层思想和DAO设计模式的开发

    无论是一个应用程序项目还是一个Web项目,我们都可以按照分层思想进行程序设计.对于分层,当下最流行划分方式是:表现层+控制层+业务层+数据层.其中,业务层和数据层被统称为后台业务层,而表现层和控制层属 ...