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

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

本来我是绝望的,

但是没办法,老板的需求不能驳回啊,于是就来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. linux下补丁制作及打补丁实例【转】

    转自:http://www.latelee.org/using-gnu-linux/diff-and-patch-on-linux.html 搞ARM有一段时日了,期间看了不少开发板的手册,手册的内容 ...

  2. REX系统了解1

    REX是高通开发出来的一个操作系统,起初它是为了在Inter 80186处理器上应用而开发的,到后来才转变成应用在ARM这种微处理器上.他历经了很多版本,代码也越来越多,功能也越来越完善.REX只用不 ...

  3. Python Challenge 第 2 关攻略:ocr

    text="那一大推乱码" 方案1 from collections import Counter print(Counter(text)) 方案2 import string & ...

  4. 众签demo

    众签demo using System; using System.Collections.Generic; using System.Linq; using System.Text; using S ...

  5. APUE-文件和目录(二)函数access,mask,chmod和粘着位

    4.7 函数access和faccessat 当一个进程使用了设置用户ID和设置组ID作为另一个用户(或者组)运行时,这时候有效用户(组)ID和实际用户(组)ID不一样,但进程仍然希望测试实际用户(组 ...

  6. linux定时任务-cron

    /sbin/service crond start //启动服务 /sbin/service crond stop //关闭服务 /sbin/service crond restart //重启服务 ...

  7. 错误/异常:The project cannot be built until build path errors are resolved 和 Unbound classpath container: 'JRE System Library [JavaSE-1.7]' in project 'MyJavaCode';的解决方法

    错误1: The project cannot be built until build path errors are resolved 解决方法: 把java的类库加载进去即可,在工程上右键 选择 ...

  8. [android]解析XML文件的方法有三种:PULL,DOM,SAM

    PULL 的工作原理: XML pull提供了开始元素和结束元素.当某个元素开始时,可以调用parser.nextText从XML文档中提取所有字符数据.当解析到一个文档结束时,自动生成EndDocu ...

  9. 10月15日 | 云栖大会“淘宝移动技术实践&开放论坛”来了!

    参会报名链接:http://baichuan.taobao.com/marketing/yunqi#?baichuan_channel=cnblogs 顺应移动互联网消费升级趋势, 淘宝作为移动领域的 ...

  10. Atom编辑器试用(Win7)

     看到Atom的官网(https://atom.io/)上说,Atom是A hackable text editor for the 21st Century,是一个基于V8引擎的editor,于是决 ...