前言:Treeview控件是咱們在WinForm、WebForm開發中常用的控件,須要從數據庫動態加載數據,而後遞歸綁定每個節點;一樣,遞歸的思路在其餘程序中也常常運用,包括.Net MVC等。html
經過網上查找,綁定TreeView控件的方法很是多,我通過本身思考而且結合工做經驗,總結了一個最簡單的綁定方法,供你們參考。node
效果圖:數據庫
數據庫表:spa
代碼.net
VB.net:code
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#:orm
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工做札記系列:htm