程序地带

[工作札记]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工作札记系列:


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


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


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/thanks/p/14283128.html

随机推荐

每日一皮:这个食堂好...

【往期推荐】往期推荐每日一皮:新年好...每日一皮:单身狗的悲哀...每日一皮:男同胞们小心,连视频直播都被东南亚邪术控制了...每日一皮&#x...

程序猿DD_ 阅读(127)

chrome的多个版本,麻烦

为了测试uniapp,我不得不更新到最新版本可更新到最新版本后,我的wpe就找不到chrome浏览器了,也就无法截包,又不得不换到低版本...

ewwerpm 阅读(182)

Ubuntu18.04 中文输入法安装

Step1:安装中文字体在设置中的区域和语言改为汉语。Step2:安装fcitx终端中输入命令行:sudoaptinstallfcitxStep3࿱...

~天天天蓝~ 阅读(488)

JavaScript里面的自增和自减问题

一、自增自减1.1、自增++a,a++(自减同理)(1),原变量不管是先增还是后增,都会使得原变量增/减1vara=10,b=10;a&#...

小梦新靓 阅读(657)

Android线程间通信

Handler和runOnUiThreadHandlerrunOnUiThread在非主UI线程更新视图,常用这两种方法。对于第一种方法,是采用传递消息的方式,...

Bruce.vvu 阅读(669)