上篇是利用xml檔案與treeview進行binding。
若是動態建立treeview該如何建立?
主要參考了這位大大的寫法:
http://blog.blueshop.com.tw/topcat/archive/2005/12/07/15393.aspx
資料表的部分我目前還沒建。
不過應該也會依照同樣的格式。
寫法是先將資料讀入至dataset後,存為session。
之後在另一個function中讀取session後,利用遞迴的方式建出樹來。
我改寫如下(其實也沒改甚麼)
第一個function為讀取資料:
第二個function為建立樹:
功能還沒實際測試,不知道能不能成功。
若是動態建立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
功能還沒實際測試,不知道能不能成功。