> >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 >