2016-11-21 4 views
0

이 코드의 잘못된 점은 무엇입니까? 3 개의 테이블, VisitorSheet 관련 Building 및 Visit와 관련된 방문자 시트가 있습니다. 그러나 모든 건물에 VisitorSheet가있는 것은 아니며 모든 VisitorSheet에 방문이있는 것은 아닙니다. 이 코드가 실행되면 모든 VisitorSheets가 각 건물에 대해 표시되고 모든 VisitorSheet에 대한 모든 Visits가 표시됩니다. 각 Treeview 노드에 올바른 레코드가 표시되도록 필터링하려면 어떻게합니까?VB.Net TreeView 필터링 부모 및 자식 레코드

Me.VisitTableAdapter.Fill(Me.VisitDbDataSet.Visit) 
Me.VisitorSheetTableAdapter.Fill(Me.VisitorSheetDbDataSet.VisitorSheet) 
Me.BuildingTableAdapter.Fill(Me.BuildingDbDataSet.Building) 

Try 
    For Each masterRow As DataRow In BuildingDbDataSet.Tables("Building").Rows 
     Dim masterNode As New TreeNode(masterRow("Abbr").ToString()) 
     TreeView1.Nodes.Add(masterNode) 

     For Each childRow As DataRow In VisitorSheetDbDataSet.Tables("VisitorSheet").Rows 
      masterRow.GetChildRows("SheetNo") 

      Dim childNode As New TreeNode(childRow("SheetDate").ToString()) 
      masterNode.Nodes.Add(childNode) 

      For Each childRow1 As DataRow In VisitDbDataSet.Tables("Visit").Rows 
       masterRow.GetChildRows("VisitNo") 

       Dim childNode1 As New TreeNode(childRow1("Visitor").ToString()) 
       childNode.Nodes.Add(childNode1) 
      Next 
     Next 
    Next 

샘플은

enter code here

답변

0

현재 각 테이블의 모든 행에 걸쳐 반복하고 있습니다. 자식 행에 대해서만 반복해야합니다.

For Each masterRow As DataRow In BuildingDbDataSet.Tables("Building").Rows 
    Dim masterNode As New TreeNode(masterRow("Abbr").ToString()) 
    TreeView1.Nodes.Add(masterNode) 

    For Each childRow As DataRow In VisitorSheetDbDataSet.Tables("VisitorSheet").Rows 
     'masterRow.GetChildRows("SheetNo") 

     Dim childNode As New TreeNode(childRow("SheetDate").ToString()) 
     masterNode.Nodes.Add(childNode) 

     For Each childRow1 As DataRow In masterRow.GetChildRows("SheetNo") 

      '... 

     Next 
    Next 
Next 
+0

지금 4:54 am - 11/22/2016. 다양한 변화를 시도했지만 여전히 어려움을 겪었습니다. 당신이 프로그램을 완성 할 수있는 코드에 변경을 삽입 할 수 있다면 고맙겠습니다. TREEVIEW로드 코드를 제외한 프로그램의 다른 모든 부분은 정상입니다. 좀 쉬러 가려고. –

관련 문제