When i try to fill a treview with a lot of nodes, refresh takes a long time.
I suppose treview is refreshed every time i add a node.
What is the better way to fill treview with several nodes ? Here is my little procedure which is execute in a few seconds, but after this the page blocks.
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
TreeView1.Nodes.Clear()
Dim r1 As TreeNode
Dim r2 As TreeNode
Dim r3 As TreeNode
Dim r4 As TreeNode
Dim r5 As TreeNode
For i0 As Integer = 0 To 10
r1 = TreeView1.Nodes.Add(“0 naming”)
r1.ImageIndex = 1
r1.StateImageIndex = 3
For i1 As Integer = 0 To 2
r2 = r1.Nodes.Add(“1 naming”)
r2.ImageIndex = 1
r2.StateImageIndex = 3
For i2 As Integer = 0 To 2
r3 = r2.Nodes.Add(“2 naming”)
r3.ImageIndex = 1
r3.StateImageIndex = 3
For i3 As Integer = 0 To 2
r4 = r3.Nodes.Add(“3 naming”)
r4.ImageIndex = 1
r4.StateImageIndex = 3
For ix As Integer = 0 To 10
r5 = r4.Nodes.Add(“4 naming”)
r5.ImageIndex = 1
r5.StateImageIndex = 3
Next
Next
Next
Next
Next
End Sub
Luca, thanks for your answer.
I followed your suggestions. With the use of TreeView.VirtualScrolling = real-time execution has been reduced.
I need to populate treview with all the nodes at the start, so when I try to populate with 76000 nodes it takes 25 seconds with Chrome and 95 seconds with IE 11. Moreover if I call the procedure 2 times with IE11, I get an “Out of memory ” error.
I assumed that using LazyLoading would reduce the refresh time because only visible nodes will be sent to the client, but I think the time is still too long.
Do you have any other suggestions? Is There a third party treeview to be used alternatively ?
I attach my procedure.
Thank you.
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
TreeView1.Nodes.Clear()
TreeView1.Update()
Dim r1 As TreeNode
Dim r2 As TreeNode
Dim r3 As TreeNode
Dim r4 As TreeNode
Dim r5 As TreeNode
Dim root As TreeNode
root = TreeView1.Nodes.Add(“Root”)
root.LazyLoading = True
For i0 As Integer = 0 To 20
r1 = root.Nodes.Add(“0 naming”)
r1.Visible = False
r1.ImageIndex = 1
r1.StateImageIndex = 3
r1.LazyLoading = True
For i1 As Integer = 0 To 8
r2 = r1.Nodes.Add(“1 naming”)
r2.Visible = False
r2.ImageIndex = 1
r2.StateImageIndex = 3
r2.LazyLoading = True
For i2 As Integer = 0 To 6
r3 = r2.Nodes.Add(“2 naming”)
r3.Visible = False
r3.ImageIndex = 1
r3.StateImageIndex = 3
r3.LazyLoading = True
For i3 As Integer = 0 To 8
r4 = r3.Nodes.Add(“3 naming”)
r4.Visible = False
r4.ImageIndex = 1
r4.StateImageIndex = 3
r4.LazyLoading = True
For ix As Integer = 0 To 10
r5 = r4.Nodes.Add(“4 naming”)
r5.Visible = False
r5.ImageIndex = 1
r5.StateImageIndex = 3
r5.LazyLoading = True
Next
r4.Collapse()
Next
r3.Collapse()
Next
r2.Collapse()
Next
r1.Collapse()
Next
root.Collapse()
End Sub
Please login first to submit.