簡體   English   中英

如何在所選節點上添加新的樹形視圖?

[英]How to add a new treeview at the selected node?

我有四個層次的樹狀視圖; 父母,孩子,孫子,曾孫。 我選擇的節點在孫級別。

我想做的是在孫代上創建一個新的“ Treeview”-不,我不願意為“ selectednode”(孫代)創建一個新節點。 所以應該是這樣的:

親子孫(New TreeView)曾是孫的PARENT
曾孫子女
孫子孫子孫子

這將類似於父母的餐桌,父母和母親一起離開,並與現有子女的配偶以外的其他配偶生育新子女。

   Private Sub PopulateRootLevel()
            ' query to find first round of parent
            PopulateNodes(dt, JCATreeView.Nodes)
    End Sub

Private Sub PopulateNodes(ByVal dt As DataTable, ByVal nodes As TreeNodeCollection)
        For Each dr As DataRow In dt.Rows
            Dim tn As New TreeNode()
            tn.Text = dr("TITLE").ToString()
            tn.Value = dr("Parent_ID").ToString()
            nodes.Add(tn)

            'If node has child nodes, then enable on-demand populating
            tn.PopulateOnDemand = (CInt(dr("childnodecount")) > 0)
        Next
End Sub

Private Sub PopulateSubLevel(ByVal parentid As Integer, ByVal parentNode As TreeNode)

        ' query to find children of parent with child node count of parent
         da.Fill(dt)
        PopulateNodes(dt, parentNode.ChildNodes)
End Sub

Protected Sub TreeView1_TreeNodePopulate(ByVal sender As Object, _
  ByVal e As System.Web.UI.WebControls.TreeNodeEventArgs) Handles TreeView1.TreeNodePopulate
        ' add a test to determine if this is from TreeView1 or Sub_TreeView1
         PopulateSubLevel(CInt(e.Node.Value), e.Node)
End Sub

Protected Sub TreeView1_SelectedNodeChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TreeView1.SelectedNodeChanged

        Dim selected_parent_id As Integer = sender.SelectedNode.value
        Parent_to_NEW_TREEVIEW_PopulateSubLevel(selected_parent_id, sender.SelectedNode)
End Sub

Private Sub Sub_TreeView1_PopulateSubLevel(ByVal parent_id As Integer, ByVal parentNode As TreeNode)

        ' Query to get new children of parents
        da.Fill(dt2)
        Sub_TreeView1_PopulateNodes(dt2, parentNode.ChildNodes)
End Sub

    Private Sub Sub_TreeView1_PopulateNodes(ByVal dt As DataTable, ByVal nodes As TreeNodeCollection)
        For Each dr As DataRow In dt.Rows
            Dim tn As TreeNode = New TreeNode()
            'tn = parentBCNode.Nodes.Add("NEW_PARENT_TREEVIEW")

            ' query to get child on the new parent treeview

            tn.Text = dr("New parent title").ToString()
            tn.Value = dr("New_parent_ID").ToString()
            nodes.Add(tn)

            'If node has child nodes, then enable on-demand populating
            tn.PopulateOnDemand = (CInt(dr("childnodecount")) > 0)
        Next
    End Sub

你不能那樣做。 TreeView不能將另一個TreeView控件作為其子節點之一。 您唯一可以做的就是將TreeView分配給TreeNode的tag屬性,但是不會顯示(很明顯)。 我不明白您為什么要這么做,除非您希望該子孫樹具有不同的繪制行為。 您可以使用treeNode.Level屬性來找出該節點處於哪個級別。 同樣,您可以創建一個自定義對象(包含所有必需的信息)並將其存儲在treeNode.Tag屬性中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM