Мне нужно использовать древовидное представление из таблицы данных, которую я получил из ODB C dbase. таблица имеет CompID, ParentCompID и CompName, все строки. В моей таблице около 4500 строк. образец таблицы базы данных
Я нашел код на inte rnet и адаптировал его так, чтобы он работал для меня, я могу заполнить древовидное представление, но из-за детей и внуков в просмотр дерева занимает у меня около 7 минут (что не работает в моей программе). Я застрял в этом на неделю, не могу найти более быстрого способа. Я начинающий программист VB. net. Кто-нибудь может мне помочь или указать мне направление? Спасибо.
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
TreeView1.Visible = False
Dim PrSet As DataSet = PDataset("SELECT CompID, ParentCompID, CompName, CompNo FROM [Component] Where CHAR_LENGTH(CompNo) = 14 AND (ParentCompID IS NOT NULL)")
TreeView1.BeginUpdate()
TreeView1.Nodes.Clear()
DataGridView5.DataSource = PrSet.Tables(0)
For Each dr As DataRow In PrSet.Tables(0).Rows
If (dr("ParentCompID")) = 1040965 Then
Dim tnParent As New TreeNode()
tnParent.Text = dr("CompNo").ToString().Trim() & " " & dr("CompName").ToString().Trim()
Dim value As String = dr("CompID").ToString()
tnParent.Expand()
TreeView1.Nodes.Add(tnParent)
FillChild(tnParent, value)
End If
Next
TreeView1.Sort()
TreeView1.Visible = True
TreeView1.EndUpdate()
End Sub
Public Function FillChild(parent As TreeNode, IID As String) As Integer
Dim ds As DataSet = PDataset("SELECT CompID, ParentCompID, CompName, CompNo FROM Component WHERE ParentCompID =" + IID)
If ds.Tables(0).Rows.Count > 0 Then
For Each dr As DataRow In ds.Tables(0).Rows
Dim child As New TreeNode()
child.Text = dr("CompNo").ToString().Trim() & " " & dr("CompName").ToString().Trim()
Dim temp As String = dr("CompID").ToString()
child.Collapse()
parent.Nodes.Add(child)
FillChild(child, temp)
Next
Return 0
Else
Return 0
End If
End Function
Protected Function PDataset(select_statement As String) As DataSet
Dim _con As New OdbcConnection("Dsn=amos")
Dim ad As New OdbcDataAdapter(select_statement, _con)
Dim ds As New DataSet()
ad.Fill(ds)
_con.Close()
Return ds
End Function