主/详细信息布局,允许在主表

时间:2016-05-07 19:26:26

标签: vb.net ado.net

我已经实现了Microsoft的example,它处理两个表:Master和Detail。

我喜欢它如何根据主网格中的选择自动填充细节网格。但是,如果我想在主网格中选择多个类别(示例中的“客户”)并获取所有这些类别的详细信息,该怎么办?

实施此行为的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

在这种情况下,您必须自己进行过滤。您不必将子网格绑定到关系,而是将其绑定到子表。然后,您将处理父网格的相应事件,然后根据选定的父记录过滤子数据。 E.g。

Private Sub parentDataGridView_SelectionChanged(sender As Object, e As EventArgs) Handles parentDataGridView.SelectionChanged
    Dim parentIDs As New List(Of Object)

    For Each selectedRow As DataGridViewRow In parentDataGridView.SelectedRows
        Dim rowView = DirectCast(selectedRow.DataBoundItem, DataRowView)

        parentIDs.Add(rowView("ParentID"))
    Next

    childBindingSource.Filter = If(parentIDs.Any(),
                                   String.Format("ParentID IN ({0})",
                                                 String.Join(", ",
                                                             parentIDs)),
                                   String.Empty)
End Sub