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
Title:
Populating treeview takes a long time
Environment versions
Database:
MS SQL Server
Miscellaneous
Thread ID:
01286472
Message ID:
01286472
Views:
200
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
Riyaz Patanwala
I. T. Programmer
Al Jaber Energy Services L.L.C.
P.O.Box 47467
Abu Dhabi, U.A.E.
Tel - +971 2-502-1644
Fax - +971 2-554-6106
Cell - +971 50 358-0229
Email - riyaz.patanwala@ajes.ae
Website - www.ajes.ae
Next
Reply
Map
View

Click here to load this message in the networking platform