2016-11-21 75 views
0

这段代码有什么问题?我有3张表格,与VisitorSheet相关的建筑物以及与Visit相关的访问者表格。然而,并非所有的建筑物都有VisitorSheet,并非所有的VisitorSheet都有访问。当此代码运行时,将为每个建筑物显示所有VisitorSheets,并为每个VisitorSheet显示所有访问。如何筛选以在每个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的代码之外,程序的所有其他方面都可以。去休息一下。 –