Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Populating treeview takes a long time
Message
General information
Forum:
ASP.NET
Category:
Other
Environment versions
Database:
MS SQL Server
Miscellaneous
Thread ID:
01286472
Message ID:
01286535
Views:
18
It is usually best to populate each node only when it becomes visible.

>Dear all
>I am developing a application, in which there is a heirarchy of levels/stages of construction, which i am showing in treeview. but the treeview takes quite a long time to populate.
>Kindly analyse my code and let me know, if anything can be done to make it faster.
>
>Thanks & Regards
>
>
>
>Private Sub fill_treeview(Optional ByVal selected_key As String = "")
>        Dim i As Integer
>        Dim mynode, mynode1 As TreeNode
>        Dim mynodecol(), selectedmynodecol() As TreeNode
>        Dim myds As New DataSet
>        Dim myda1 As SqlDataAdapter
>        Dim SqlString = "Select 'L' + Rtrim(Ltrim(convert(varchar,LevelMast.LevelId)))  as LevelId, " & _
>            "ltrim(rtrim(LevelMast.LevelName)) + ' (' + rtrim(ltrim(LevelMast.LevelCode)) + ')' as LevelName ,LevelMast.ProjectLevelNo as Tag, " & _
>            "Case LevelMast.ParentLevelId When Null then '' else 'L' + Rtrim(Ltrim(convert(varchar,LevelMast.ParentLevelId))) end " & _
>            "as ParentLevelId, LevelMast.ParentLevelNo, ProjectLevelTab.WorkStepLevel " & _
>            "from LevelMast inner join ProjectLevelTab on " & _
>            "LevelMast.ProjectCode = ProjectLevelTab.ProjectCode and LevelMast.ProjectLevelNo = ProjectLevelTab.ProjectLevelNo " & _
>            "where LevelMast.ProjectCode = @ProjectCode " & _
>            "order by LevelMast.ProjectLevelNo,LevelMast.LevelOrderNo"
>        '
>        myda1 = New SqlDataAdapter(SqlString, My.Settings.PMSConnectionString)
>        myda1.SelectCommand.Parameters.Add("@ProjectCode", SqlDbType.VarChar).Value = Me.ProjectCode.Lookupvalue
>        myda1.Fill(myds, "PMS_Treeview")
>
>        Me.TreeView1.Nodes.Clear()
>        With myds.Tables("PMS_Treeview")
>            For i = 0 To .Rows.Count - 1
>                mynode = New TreeNode
>                If empty(.Rows(i).Item("ParentLevelId").ToString) = False Then
>                    mynodecol = Me.TreeView1.Nodes.Find(.Rows(i).Item("ParentLevelId").ToString, True)
>                    '
>                    mynode1 = New TreeNode
>                    mynode1.Name = .Rows(i).Item("LevelId").ToString
>                    mynode1.Text = .Rows(i).Item("LevelName").ToString
>                    mynode1.ImageIndex = Val(.Rows(i).Item("Tag").ToString) - 1
>                    mynode1.SelectedImageIndex = Val(.Rows(i).Item("Tag").ToString) - 1
>                    mynode1.Tag = .Rows(i).Item("Tag").ToString
>
>                    'Check whether it is workstep and if yes get the activity desc from leveltran
>                    If .Rows(i).Item("WorkStepLevel").ToString.ToLower = "true" Then
>                        Dim TempLevelId = mynode1.Name.Substring(1)
>                        Dim sqlcmd As New SqlCommand
>                        Dim r1 As SqlDataReader
>                        With sqlcmd
>                            .CommandText = "Select 'L' + Rtrim(Ltrim(convert(varchar,TempId))) as LevelId, " & _
>                                "rtrim(ltrim(ActivityDesc)) as LevelName, ProjectLevelNo+1 as Tag " & _
>                                "from LevelTran " & _
>                                "where ProjectCode = @ProjectCode and LevelId = @LevelId " & _
>                                "order by TempId"
>                            .Parameters.Add("@ProjectCode", SqlDbType.VarChar, 10).Value = Me.ProjectCode.Lookupvalue
>                            .Parameters.Add("@LevelId", SqlDbType.Int).Value = TempLevelId
>                            .Connection = Get_Connection()
>                            Try
>                                .Connection.Close()
>                                .Connection.Open()
>                                r1 = .ExecuteReader()
>                                If r1.HasRows = True Then
>                                    While r1.Read
>                                        Dim mynodechild As New TreeNode
>                                        mynodechild.Name = r1.Item("LevelId").ToString
>                                        mynodechild.Text = r1.Item("LevelName").ToString
>                                        mynodechild.ImageIndex = Val(r1.Item("Tag").ToString) - 1
>                                        mynodechild.SelectedImageIndex = Val(r1.Item("Tag").ToString) - 1
>                                        mynodechild.Tag = r1.Item("Tag").ToString
>                                        '
>                                        mynode1.Nodes.Add(mynodechild)
>                                    End While
>                                    '
>                                End If
>                            Catch ex As Exception
>                                MsgBox(ex.Message, MsgBoxStyle.Critical, Me.Text)
>                            Finally
>                                .Connection.Close()
>                            End Try
>                        End With
>                    End If
>                    '
>                    mynodecol(0).Nodes.Add(mynode1)
>
>                Else
>                    mynode.Name = .Rows(i).Item("LevelId").ToString
>                    mynode.Text = .Rows(i).Item("LevelName").ToString
>                    mynode.ImageIndex = Val(.Rows(i).Item("Tag").ToString) - 1
>                    mynode.SelectedImageIndex = Val(.Rows(i).Item("Tag").ToString) - 1
>                    mynode.Tag = .Rows(i).Item("Tag").ToString
>                    Me.TreeView1.Nodes.Add(mynode)
>                End If
>                '
>            Next i
>
>            .Clear()
>
>
>            If empty(selected_key) = False Then
>                selectedmynodecol = Me.TreeView1.Nodes.Find(selected_key, True)
>                Me.TreeView1.SelectedNode = selectedmynodecol(0)
>            End If
>        End With
>        myds = Nothing
>    End Sub
>
Craig Berntson
MCSD, Microsoft .Net MVP, Grape City Community Influencer
Previous
Reply
Map
View

Click here to load this message in the networking platform