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

[工作札記]01: CS系統中分頁控件的制作

[工作札記]02: .Net Winform控件TreeView最簡遞歸綁定方法

[工作札記]03: 微軟Winform窗體中設計上的Bug,會導致程序編譯失敗,影響范圍:到最新的.net4.7.2都有


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM