2015-02-24 48 views
0

嘿我試圖添加第二個層次爲樹視圖的第一級是組名和第二級是說明如何添加級別到TreeView控件

我有這樣的代碼,但是每個剛剛創建單獨的節點,而不是哦,在不同的組名

Sub LoadGroupTree() 
    '**Loads Property List 
    ' Initialise Error Checking 


    ' Dimension Local Variables 
    Dim uRecSnap As ADODB.Recordset 
    Dim uPar As ADODB.Parameter 
    Dim uNode As TreeNode 
    ' Dim iGroupID As Integer = 0 

    Dim uStackframe As New Diagnostics.StackFrame 
    Try 

     ' Check For Open Connection 
     If uDBase Is Nothing Then 
      OpenConnection() 
      bConnection = True 
     End If 

     ' Run Stored Procedure - Load Property List (Based on Search Value) 
     uCommand = New ADODB.Command 
     With uCommand 
      .ActiveConnection = uDBase 
      .CommandType = ADODB.CommandTypeEnum.adCmdStoredProc 
      .CommandTimeout = 0 
      uPar = .CreateParameter("@SearchValue", ADODB.DataTypeEnum.adVarChar, ADODB.ParameterDirectionEnum.adParamInput, 30) 
      .Parameters.Append(uPar) 
      .Parameters("@SearchValue").Value = txtFilter.Text 
      .CommandText = "InspsectionGroup_LoadRecords" 
      uRecSnap = .Execute 
     End With 



     ' Suppress TreeView Repaint/Clear TreeView 
     tvwInspectionGroups.BeginUpdate() 
     tvwInspectionGroups.Nodes.Clear() 
     tvwInspectionGroups.ShowNodeToolTips = True 

     ' Populate List 
Do Until uRecSnap.EOF 

      uNode = tvwInspectionGroups.Nodes.Add("P" & Format(uRecSnap("InspectionGroupID").Value, "0000"), uRecSnap("GroupName").Value) 
      uNode.Tag = "P:" & Format(uRecSnap("InspectionGroupID").Value, "0000") & ":01:" 


      uNode.Nodes.Add("D" & Format(uRecSnap("GroupName").Value, "0000"), uRecSnap("Description").Value) 
      uNode.Tag = "D:" & Format(uRecSnap("GroupName").Value, "0000") & ":02:" 


      uNode.Nodes.Add("A" & Format(uRecSnap("Description").Value, "0000"), uRecSnap("AddressLine1").Value) 
      uNode.Tag = "A:" & Format(uRecSnap("Description").Value, "0000") & ":03:" 
      uRecSnap.MoveNext() 
     Loop 
     uRecSnap.Close() 

     ' Repaint TreeView. 
     tvwInspectionGroups.EndUpdate() 
     tvwInspectionGroups.Refresh() 

     ' Close Connection 


    Catch ex As Exception 
     ' Catch Error 
     If Err.Number <> 0 Then 
      WriteAuditLogRecord(uStackframe.GetMethod.DeclaringType.FullName, uStackframe.GetMethod.Name.ToString, "Error", Err.Description & vbCrLf & vbCrLf & ex.StackTrace, 0) 
      MsgBox("System Error Ref: " & sAuditID & vbCrLf & uStackframe.GetMethod.DeclaringType.FullName & "/" & uStackframe.GetMethod.Name.ToString & vbCrLf & Err.Description & vbCrLf & vbCrLf & ex.StackTrace & Chr(13) & sErrDescription, MsgBoxStyle.Exclamation + MsgBoxStyle.OkOnly, "Business Management System - Unexepected Error Ref: " & sAuditID) 
     End If 

    Finally 

     If bConnection Then CloseConnection() 
     uRecSnap = Nothing 

    End Try 
+0

你必須給孩子添加到uNode本身之中。 uNode.Nodes.Add ... n過去,如果我不知道我有多少個關卡,我會遞歸地做這件事。如果你只有一個級別的數據,它會更容易。還有...爲什麼你使用經典的ADO?!?!? – Jeremy 2015-02-24 14:22:01

+0

@Jeremy我有多個級別我想要3個一個組名稱來描述然後再次下到Addressline1我想我把它添加到我的代碼 – Richard 2015-02-24 17:26:15

+0

您正在將所有項目添加到同一個子節點。如果您需要多個級別,則需要存儲在級別2創建的節點,並將該子級添加到該節點。 – Jeremy 2015-02-24 17:43:06

回答

0
Sub LoadGroupTree() 
    '**Loads Property List 
    ' Initialise Error Checking 


    ' Dimension Local Variables 
    Dim uRecSnap As ADODB.Recordset 
    Dim uPar As ADODB.Parameter 
    Dim uNode As TreeNode 
    Dim uNode3 As TreeNode 

    ' Dim iGroupID As Integer = 0 

    Dim uStackframe As New Diagnostics.StackFrame 
    Try 

     ' Check For Open Connection 
     If uDBase Is Nothing Then 
      OpenConnection() 
      bConnection = True 
     End If 

     ' Run Stored Procedure - Load Property List (Based on Search Value) 
     uCommand = New ADODB.Command 
     With uCommand 
      .ActiveConnection = uDBase 
      .CommandType = ADODB.CommandTypeEnum.adCmdStoredProc 
      .CommandTimeout = 0 
      uPar = .CreateParameter("@SearchValue", ADODB.DataTypeEnum.adVarChar, ADODB.ParameterDirectionEnum.adParamInput, 30) 
      .Parameters.Append(uPar) 
      .Parameters("@SearchValue").Value = txtFilter.Text 
      .CommandText = "InspsectionGroup_LoadRecords" 
      uRecSnap = .Execute 
     End With 



     ' Suppress TreeView Repaint/Clear TreeView 
     tvwInspectionGroups.BeginUpdate() 
     tvwInspectionGroups.Nodes.Clear() 
     tvwInspectionGroups.ShowNodeToolTips = True 

     ' Populate List 
Do Until uRecSnap.EOF 

      uNode = tvwInspectionGroups.Nodes.Add("P" & Format(uRecSnap("InspectionGroupID").Value, "0000"), uRecSnap("GroupName").Value) 
      uNode.Tag = "P:" & Format(uRecSnap("InspectionGroupID").Value, "0000") & ":01:" 


      uNode3 = uNode.Nodes.Add("D" & Format(uRecSnap("GroupName").Value, "0000"), uRecSnap("Description").Value) 
      uNode.Tag = "D:" & Format(uRecSnap("GroupName").Value, "0000") & ":02:" 


      uNode3.Nodes.Add("A" & Format(uRecSnap("Description").Value, "0000"), uRecSnap("AddressLine1").Value) 
      uNode3.Tag = "A:" & Format(uRecSnap("Description").Value, "0000") & ":03:" 
      uRecSnap.MoveNext() 
     Loop 
     uRecSnap.Close() 

     ' Repaint TreeView. 
     tvwInspectionGroups.EndUpdate() 
     tvwInspectionGroups.Refresh() 

     ' Close Connection 


    Catch ex As Exception 
     ' Catch Error 
     If Err.Number <> 0 Then 
      WriteAuditLogRecord(uStackframe.GetMethod.DeclaringType.FullName, uStackframe.GetMethod.Name.ToString, "Error", Err.Description & vbCrLf & vbCrLf & ex.StackTrace, 0) 
      MsgBox("System Error Ref: " & sAuditID & vbCrLf & uStackframe.GetMethod.DeclaringType.FullName & "/" & uStackframe.GetMethod.Name.ToString & vbCrLf & Err.Description & vbCrLf & vbCrLf & ex.StackTrace & Chr(13) & sErrDescription, MsgBoxStyle.Exclamation + MsgBoxStyle.OkOnly, "Business Management System - Unexepected Error Ref: " & sAuditID) 
     End If 

    Finally 

     If bConnection Then CloseConnection() 
     uRecSnap = Nothing 

    End Try 
+0

注意:這是不雅的。如果你有更多關卡要展示,這將需要改變。如上所述,如果您最終顯示的父級/子級信息數量級別未知,則應該將其轉換爲遞歸。 – Jeremy 2015-02-24 18:37:16