Преобразование строки из SQL Server в TreeView в VB.NET - PullRequest
0 голосов
/ 09 июня 2019

Я читаю строковый столбец из базы данных SQL Server, содержащей строки переменной длины длиной, кратные 3, такие как «000», «000001», «000002001», ...

Я хотел бы преобразовать это поле базы данных в TreeView, в котором каждый трехзначный код должен ссылаться на уровень в нашем TreeView. Например:

000
→ 000001
→ 000002
001
→ 001001
002
→ 002001
→ 002002
→→ 002002001
→→ 002002002
003
004
→ 004001001001
 and so on...

Я использовал структуру выбора, чтобы сначала найти 3-значные поля и заполнить первый уровень TreeView, затем найти 6-значные строки, начинающиеся с "000", и заполнить второй уровень TreeView и т. Д. .

Ds_Edit.Reset()
            con = New SqlConnection(strcon)
            con.Open()
            StrSql = "SELECT Unit_PCode, Unit_Code, Unit_Desc, Unit_Image FROM cmms_Unit Order BY Unit_Code"
            Da = New SqlDataAdapter(StrSql, con)
            Da.Fill(Ds_Edit, "tajhiz")
            con.Close()
            Dim tnode As New TreeView
            Dim y As String = "000000"
            Dim g As String = "111111111"
            Dim temp20 As Integer
            temp20 = Ds_Edit.Tables(0).Rows.Count
            Dim s1 As Integer = 0
            Dim s2 As Integer = 0
            Dim str As String
            Dim tedadH As Integer
            For k = 0 To temp20 - 1
                str = Ds_Edit.Tables("tajhiz").Rows(k).Item("Unit_Code")
                tedadH = str.Count
                Select Case tedadH
                    Case 3
                        If Ds_Edit.Tables("tajhiz").Rows(k).Item("Unit_Code") = "000" Then
                            TreeView1.Nodes.Add(Ds_Edit.Tables("tajhiz").Rows(k).Item("Unit_Desc"), Ds_Edit.Tables("tajhiz").Rows(k).Item("Unit_Desc"), Ds_Edit.Tables("tajhiz").Rows(k).Item("Unit_Image"))
                        End If
                    Case 6
                        If Ds_Edit.Tables("tajhiz").Rows(k).Item("Unit_Code") Like "000###" Then
                            TreeView1.Nodes(0).Nodes.Add(Ds_Edit.Tables("tajhiz").Rows(k).Item("Unit_Desc"))
                            s1 += 1
                            y = Ds_Edit.Tables("tajhiz").Rows(k).Item("Unit_Code")
                        End If
                    Case 9
                        If Ds_Edit.Tables("tajhiz").Rows(k).Item("Unit_Code") Like y & "###" Then
                            Try
                                TreeView1.Nodes(0).Nodes(s1 - 1).Nodes.Add(Ds_Edit.Tables("tajhiz").Rows(k).Item("Unit_Desc"))
                                g = Ds_Edit.Tables("tajhiz").Rows(k).Item("Unit_Code")
                                s2 += 1
                            Catch
                            End Try
                        End If
                        'Case 12
                        '    If Ds_Edit.Tables("tajhiz").Rows(k).Item("Unit_Code") Like g & "###" Then
                        '        Try
                        '            TreeView1.Nodes(0).Nodes(s1 - 1).Nodes(s2 - 1).Nodes.Add(Ds_Edit.Tables("tajhiz").Rows(k).Item("Unit_Desc"))

                        '        Catch
                        '        End Try
                        '    End If
                End Select

Этот метод использует много системной оперативной памяти, и процесс замедляется. Я делаю преобразование правильно? Каков наилучший способ заполнения этого поля базы данных в TreeView?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...