Ghasem Boveiry Ответов: 0

Заполните treeview с помощью mysql


Привет
Я ищу способ заполнить treeview из базы данных mysql, я нашел код, который заполняет treeview с помощью
Dictionary
но его работа с двумя столбцами, а у меня есть три столбца в моей таблице, была бы решетка, Если бы кто-то помог мне сделать это с тремя столбцами.

мой стол :
Root_Name Child_Name Grandchild_Name
Root1 Child1, Так Grandchild1
Root1 Child1 Grandchild2
Root1 Ребенка2
Root2 Child1, Так
Root2 Ребенка2 Grandchild1
Child1, Так Root3

Что я уже пробовал:

Этот код добавляет много корней и их детей :

Public Function fill_TreeViewProject() As DataTable
    DT_Project_tree_dt.Clear()
    MyQuery = ""
    Dim conString As String = String.Format("server={0}; user id={1}; password={2}; database={3}; pooling=false", server, userName, password, DatabaseName)
    Using con As New MySqlConnection(conString)
        MyQuery = "SELECT DISTINCT(Child), Root, Id FROM Project_tree;"

        Using cmd As New MySqlCommand(MyQuery, con)
            cmd.CommandType = CommandType.Text
            Using sda As New MySqlDataAdapter(cmd)
                Using DT_Project_tree_dt
                    sda.Fill(DT_Project_tree_dt)
                    Return DT_Project_tree_dt
                End Using
            End Using
        End Using
    End Using
End Function


Public Sub Fill_Node_Tree()
        Tview_Nodes.Nodes.Clear()
        Dim dict As New Dictionary(Of String, List(Of String))()
        For Each row As Data.DataRow In fill_TreeViewProject.Rows
            Dim ParentRow As String = DirectCast(row.Item(1), String)
            Dim ChildRow As String = DirectCast(row.Item(0), String)

            If ParentRow Is Nothing OrElse ChildRow Is Nothing Then
                Continue For
            End If

            If dict.ContainsKey(ParentRow) Then
                'Add Child if parent already exist
                dict(ParentRow).Add(ChildRow)
            Else
                'Add parent if dosen't exist and attach the child
                dict.Add(ParentRow, New List(Of String)())
                dict(ParentRow).Add(ChildRow)
            End If
        Next

        Dim node As TreeNode

        For Each kvp In dict
            'Add Parent node
            node = New TreeNode(kvp.Key)
            Tview_Nodes.Nodes.Add(node)

            'Loop through list value and add to parent item as childs
            For Each chiled As String In kvp.Value
                node.Nodes.Add(chiled)
            Next


        Next
    End Sub

0 Ответов