[ASP] treeview控制項2

上篇是利用xml檔案與treeview進行binding。
若是動態建立treeview該如何建立?

主要參考了這位大大的寫法:
http://blog.blueshop.com.tw/topcat/archive/2005/12/07/15393.aspx

資料表的部分我目前還沒建。
不過應該也會依照同樣的格式。



寫法是先將資料讀入至dataset後,存為session。
之後在另一個function中讀取session後,利用遞迴的方式建出樹來。

我改寫如下(其實也沒改甚麼)
第一個function為讀取資料:
  1 Function LoadData() 
  2         Dim connStr As String
  3         Dim conn As SqlConnection
  4         Dim da As SqlDataAdapter
  5         Dim ds As DataSet
  6         Dim dt As DataTable
  7  
  8         Dim command As String
  9  
 10         Try 
 11             '建立連線 
 12             connStr = "" 
 13             conn = New SqlConnection(connStr)
 14             conn.Open() 
 15  
 16             '填入dataset 
 17             command = "" 
 18             da = New SqlDataAdapter(command, conn)
 19             ds = New DataSet 
 20             da.Fill(ds) 
 21  
 22             '填入datatable 
 23             dt = New DataTable 
 24             dt = ds.Tables(0) 
 25  
 26             '寫入session 
 27             Session("dt") = dt 
 28  
 29             conn.Close() 
 30         Catch ex As Exception
 31  
 32         Finally 
 33             '釋放資源 
 34             ds = Nothing 
 35             da = Nothing 
 36             conn = Nothing 
 37  
 38         End Try
 39  
 40     End Function

第二個function為建立樹:

  1     Function addNodes(ByRef aNode As TreeNode, ByVal aID As Integer)
  2         Try
  3             '讀取session資料
  4             If Session("dt") Is Nothing Then
  5                 Call LoadData()
  6             End If
  7 
  8             Dim dt As DataTable
  9             dt = Session("dt")
 10 
 11             '跑資料表
 12             Dim rows() As DataRow
 13             Dim filter As String = "ParentsID = " & aID
 14             rows = dt.Select(filter)
 15 
 16             If rows.GetUpperBound(0) >= 0 Then
 17 
 18                 Dim row As DataRow
 19                 Dim newNode As TreeNode
 20 
 21                 For Each row In rows
 22                     Dim tempId As Integer = row(0)
 23 
 24                     '塞節點屬性與值
 25                     newNode = New TreeNode
 26                     newNode.Text = row(1)
 27                     newNode.ToolTip = row(2)
 28 
 29                     '加入節點
 30                     aNode.ChildNodes.Add(newNode)
 31 
 32                     '遞迴呼叫建立子結點
 33                     addNodes(newNode, tempId)
 34                 Next
 35             End If
 36             addNodes = "sucess"
 37 
 38         Catch ex As Exception
 39             addNodes = "false"
 40         End Try
 41 
 42     End Function


功能還沒實際測試,不知道能不能成功。
較新的 較舊