如何获取在树视图 vb.net 中选中的子节点列表?

How can I get a list of childnodes checked in a treeview vb.net?

[![在此处输入图片描述][1]][1]我的树视图的设计视图:

 <asp:TreeView ID="TreeView1" ShowExpandCollapse="true" runat="server" ShowCheckBoxes="Leaf"
            ViewStateMode="Enabled">
        </asp:TreeView>

代码:

Private Sub MyProject_Load(sender As Object, e As EventArgs) Handles Me.Load

     ' MY DATATABLE WITH THE VALUES:
        Dim dt as datatable = mymethodtoreadvaluesfrombd()
       TreeView1.Nodes.Clear()
            Dim node As TreeNode
            Dim subNode As TreeNode
            For Each row As DataRow In dt.Rows

                node = Searchnode(row.Item(2).ToString(), TreeView1)
                If node IsNot Nothing Then

                    subNode = New TreeNode(row.Item(3).ToString())

                    subNode.ShowCheckBox = True
                    node.ChildNodes.Add(subNode)
                Else
                    node = New TreeNode(row.Item(2).ToString())
                    subNode = New TreeNode(row.Item(3).ToString())

                    node.ChildNodes.Add(subNode)
                    TreeView1.Nodes.Add(node)
                End If
            Next
End Sub

 Private Function Searchnode(ByVal nodetext As String, ByVal trv As TreeView) As TreeNode
        For Each node As TreeNode In trv.Nodes
            If node.Text = nodetext Then
                Return node
            End If
        Next
    End Function

我有一个按钮,当我单击它时,我需要读取在我的树视图中选中的子节点。 我找不到我尝试过很多代码的方法,有人可以建议我吗?谢谢。

您可以执行第二个 for...each 循环以遍历子节点:

For Each Parentnode as TreeNode in TreeVeiw1.Nodes
    For Each Childnode as Treenode in Parentnode.Nodes
        If Childnode.checked Then

        End If
    Next
Next

我对 ID(见下面的评论)的建议是使用 Childnode.Tag,大多数控件包括 .Tag,您可以在其中存储数据。

我发现我的代码有问题,

问题是当我点击按钮时有一个自动回传事件使树视图复选框被删除,所以我把它放在加载中,直接转到按钮操作点击:

Private Sub MyProject_Load(sender As Object, e As EventArgs) Handles Me.Load

If not is postback then

' create the treeview

end if

End Sub