2015-02-24 49 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

相关问题