Я читаю строковый столбец из базы данных 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?