[工作札记]02: .Net Winform控件TreeView最简递归绑定方法
前言: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工作札记系列:
.net工作札记系列:
[工作札记]02: .Net Winform控件TreeView最简递归绑定方法
[工作札记]03: 微软Winform窗体中设计上的Bug,会导致程序编译失败,影响范围:到最新的.net4.7.2都有
作者:thanks
微信:-
QQ:305380844
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!