У меня есть элемент управления TreeView
, который отображает «Категории» данных с несколькими «Списками» под каждой категорией. У меня есть элемент управления, который удаляет выбранный список в каждой категории и отдельный элемент управления для удаления всей категории.
Когда я запускаю событие удаления списка, все работает отлично, и он вызывает модуль, который обновляет данные, чтобы показать, что удаленный список был удален. Когда это происходит, TreeView
свернет все расширенные категории, что нежелательно; главным образом из-за того, что пользователь может пытаться удалить несколько списков и постоянно вынужден go возвращаться в расширенную категорию.
Есть ли строка кода или свойство, которое я могу изменить, чтобы предотвратить такое поведение?
Это процедура, которая обновляет данные и (непреднамеренно) сворачивает TreeView
с упрощенными переменными:
Public Sub loadLists(tv As TreeView)
Dim x As Integer = 0
Dim pNode() As TreeNode
' # Clear the TreeView of previous entries
tv.Nodes.Clear()
Using db As New SqlConnection(lgnGetCredentials)
Using sp As SqlCommand = db.CreateCommand
Dim sa As SqlDataAdapter = New SqlDataAdapter(sp)
Dim ds As DataSet = New DataSet()
' # Initialise stored procedure to return the categories
db.Open()
With sp
.CommandText = "dbo.loadCategories"
.CommandType = CommandType.StoredProcedure
End With
sa.Fill(ds)
' # Insert data into Parent nodes
For Each dr As DataRow In ds.Tables(0).Rows()
tv.Nodes.Add(ds.Tables(0).Rows(x)(0).ToString().Trim).Name = ds.Tables(0).Rows(x)(0).ToString
x += 1
Next
db.Close()
End Using
Using sp As SqlCommand = db.CreateCommand
Dim sa As SqlDataAdapter = New SqlDataAdapter(sp)
Dim ds As DataSet = New DataSet()
' # Initialise stored procedure to return the list title and category
db.Open()
With sp
.CommandText = "dbo.loadListsWithCategory"
.CommandType = CommandType.StoredProcedure
End With
sa.Fill(ds)
' # Insert Child nodes
x = 0
For Each dr As DataRow In ds.Tables(0).Rows()
pNode = tv.Nodes.Find(ds.Tables(0).Rows(x)(0).ToString.Trim, True).ToArray
pNode(0).Nodes.Add(ds.Tables(0).Rows(x)(1).ToString().Trim)
x += 1
Next
db.Close()
End Using
End Using
End Sub