TreeView aus ner DB richtig füllen?

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von AlexII.

    TreeView aus ner DB richtig füllen?

    Hallo,
    ich fülle eine TreeView aus ner DB wie folgt durch, siehe Screenshot und Code

    Quellcode

    1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. Dim connstr As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True"
    3. Dim conn As New SqlConnection(connstr)
    4. conn.Open()
    5. Dim cmd As New SqlCommand("SELECT * FROM Types", conn) 'Tabelle
    6. Dim dr As SqlDataReader = cmd.ExecuteReader()
    7. While dr.Read()
    8. Dim tn As TreeNode = New TreeNode()
    9. tn.Text = dr("Typname").ToString()
    10. TreeView1.Nodes.Add(tn)
    11. End While
    12. dr.Close()
    13. Dim cmd2 As New SqlCommand("SELECT * FROM Favorites", conn)
    14. Dim dr2 As SqlDataReader = cmd2.ExecuteReader()
    15. While dr2.Read()
    16. Dim tn2 As TreeNode = New TreeNode()
    17. tn2.Text = dr2("Station").ToString()
    18. TreeView1.Nodes(0).Nodes.Add(tn2)
    19. End While
    20. dr2.Close()
    21. conn.Close()
    22. End Sub


    Das Problem ist aber, dass die TV Stationen unter Radio landen und nicht unter TV, was ist in meinem Code falsch?

    PS: bin ganz neu in VB.NET
    Bilder
    • Screenshot.JPG

      36,5 kB, 833×333, 1.113 mal angesehen
    Hallo AlexII,

    der Code müsste meines Erachtens nach so aussehen:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. Dim connstr As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True"
    3. Dim conn As New SqlConnection(connstr)
    4. conn.Open()
    5. Dim cmd As New SqlCommand("SELECT * FROM Types", conn) 'Tabelle
    6. Dim dr As SqlDataReader = cmd.ExecuteReader()
    7. While dr.Read()
    8. Dim tn As TreeNode = New TreeNode()
    9. tn.Text = dr("Typname").ToString()
    10. TreeView1.Nodes.Add(tn)
    11. Dim cmd2 As New SqlCommand("SELECT * FROM Favorites where Typ = " + tn.Text, conn) 'evtl. stimmt Verkettung nicht
    12. Dim dr2 As SqlDataReader = cmd2.ExecuteReader()
    13. While dr2.Read()
    14. Dim tn2 As TreeNode = New TreeNode()
    15. tn2.Text = dr2("Station").ToString()
    16. TreeView1.Nodes(0).Nodes.Add(tn2)
    17. End While
    18. dr2.Close()
    19. conn.Close()
    20. End While
    21. dr.Close()
    22. End Sub
    bin mir aber nicht ganz sicher und habe es Online geschrieben
    Hallo AlexII,

    dann teste es einmal so:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. 'TODO: Diese Codezeile lädt Daten in die Tabelle "Database1DataSet2.Types". Sie können sie bei Bedarf verschieben oder entfernen.
    3. Me.TypesTableAdapter.Fill(Me.Database1DataSet2.Types)
    4. 'TODO: Diese Codezeile lädt Daten in die Tabelle "Database1DataSet1.Favorites". Sie können sie bei Bedarf verschieben oder entfernen.
    5. Me.FavoritesTableAdapter.Fill(Me.Database1DataSet1.Favorites)
    6. Dim connstr As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True"
    7. Dim conn As New SqlConnection(connstr)
    8. conn.Open()
    9. Dim cmd As New SqlCommand("SELECT * FROM Types", conn) 'Tabelle
    10. Dim dr As SqlDataReader = cmd.ExecuteReader()
    11. While dr.Read()
    12. Dim tn As TreeNode = New TreeNode()
    13. tn.Text = dr("Typname").ToString()
    14. TreeView1.Nodes.Add(tn)
    15. Dim cmd2 As New SqlCommand("SELECT * FROM Favorites where Typ =" & dr("Typname").ToString(), conn)
    16. Dim dr2 As SqlDataReader = cmd2.ExecuteReader()
    17. While dr2.Read()
    18. Dim tn2 As TreeNode = New TreeNode()
    19. tn2.Text = dr2("Station").ToString()
    20. tn.Nodes.Add(tn2)
    21. End While
    22. dr2.Close()
    23. End While
    24. dr.Close()
    25. conn.Close()
    26. End Sub
    ich selbst bekomme schon bei deinem Skript Fehlermeldung vom MSSQLServer. Mit dem MSSQLServer habe ich mich bisher noch nicht auseinandergesetzt. Wenn dein Skript bei dir gelaufen ist, sollte dieses auch laufen. Fakt ist dass die Schleife für die "Favorites" für jeden Node der "Types" durchlaufen werden muss, deshalb auch die geänderte SQl-Anweisung, damit nur die Favoriten des gerade vorher angelegten "Types" ausgegeben werden.