2016-03-07 2 views
0

[[enter image description ici] [1]!] [1] Voir Design pour mon TreeView:Comment puis-je obtenir une liste de childnodes vérifiée dans un treeview vb.net?

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

Le code:

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 

J'ai un bouton et quand je clique dessus, je besoin de lire les childnodes vérifiés y ma treeview. Je ne trouve pas la façon dont j'ai essayé de nombreux codes, quelqu'un peut me suggérer? Merci.

Répondre

1

Vous pouvez faire une deuxième boucle for...each en boucle à travers les nœuds enfants:

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

     End If 
    Next 
Next 

Ma suggestion pour l'ID (voir commentaire ci-dessous) serait d'utiliser Childnode.Tag, la plupart des contrôles comprennent .Tag dans lequel vous pouvez stocker Les données.

+0

Et comment puis-je obtenir les childNodes vérifiés de TreeView ?, grâce –

+1

@ Esraa_92 voir mise à jour pour répondre – OSKM

+0

J'ai une autre question, quand je crée le treeview j'attribue la valeur de texte pour le noeud enfant , donc quand j'obtiens la liste pour les éléments vérifiés j'obtiens le nom de texte du childnode, ma question est , comment puis-je sauvegarder aussi l'ID dans un childnode, pour enregistrer après les changements dans la base de données? Merci –

0

Je vois le problème dans mon code,

le problème est que lorsque je clique sur le bouton, il y a un wich événement autopostback fait les cases à cocher TreeView supprimé, donc je mis cela dans la charge, pour aller directement à la action du bouton clic:

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