[工作札记]02: .Net Winform控件TreeView最简递归绑定方法

Python 中的面向接口编程

前言:Treeview控件是我们在WinForm、WebForm开发中经常使用的控件,需要从数据库动态加载数据,然后递归绑定每一个节点;同样,递归的思路在其他程序中也经常运用,包括.Net MVC等。

通过网上查找,绑定TreeView控件的方法非常多,我经过自己思考并且结合工作经验,总结了一个最简单的绑定方法,供大家参考。

效果图:

数据库表:

《卓有成效的管理者》总结

代码

VB.net:

 1     Private Sub BindTreeView()
 2         TreeView1.Nodes.AddRange(GetChildNodes(dt, 0))
 3     End Sub
 4 
 5     Private Function GetChildNodes(dt As DataTable, pId As Integer) As TreeNode()
 6         Dim nodes As New List(Of TreeNode)
 7         Dim rows = dt.AsEnumerable().Where(Function(s) CInt(s("pId")) = pId)
 8         For Each row In rows
 9             Dim node As New TreeNode()
10             node.Text = row("Name")
11             node.Tag = row("id")
12             node.Nodes.AddRange(GetChildNodes(dt, CInt(row("id"))))
13             nodes.Add(node)
14         Next
15         Return nodes.ToArray()
16     End Function

C#:

 1         private void BindTreeView()
 2         {
 3             treeView1.Nodes.AddRange(GetChildNodes(dt, 0));
 4         }
 5 
 6         private TreeNode[] GetChildNodes(DataTable dt, int pId)
 7         {
 8             var nodes = new List<TreeNode>();
 9             var rows = dt.AsEnumerable().Where(s => Convert.ToInt32(s["pId"]) == pId);
10             foreach(var row in rows)
11             {
12                 var node = new TreeNode();
13                 node.Text = row["Name"].ToString();
14                 node.Tag = row["Tag"].ToString();
15                 node.Nodes.AddRange(GetChildNodes(dt, Convert.ToInt32(row["Tag"])));
16                 nodes.Add(node);
17             }
18             return nodes.ToArray();
19         }

 

.net工作札记系列:

[工作札记]01: CS系统中分页控件的制作

[工作札记]02: .Net Winform控件TreeView最简递归绑定方法

浅谈sql索引

给TA买糖
共{{data.count}}人
人已赞赏
经验教程

.NET 调整图片尺寸(Resize)各种方法

2021-1-15 17:04:00

经验教程

Python 中的面向接口编程

2021-1-15 17:26:00

⚠️
免责声明:根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。 本站为个人博客非盈利性站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途,网站会员捐赠是您喜欢本站而产生的赞助支持行为,仅为维持服务器的开支与维护,全凭自愿无任何强求。本站部份代码及教程来源于互联网,仅供网友学习交流,若您喜欢本文可附上原文链接随意转载。
无意侵害您的权益,请发送邮件至 momeis6@qq.com 或点击右侧 私信:momeis 反馈,我们将尽快处理。
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索