![](/img/trans.png)
[英]Showing parent datatable in one datagridview and show child datatable elements in another?
[英]Show child data in a DataGridView control related to multiple parent entity records
我有一個帶有三個BindingSource
控件的VB winforms窗體,每個控件顯示通過DB First創建的三個相關實體的數據(通過DataGridView
或綁定的文本框)。
我需要有一個datagridview
顯示和允許添加/編輯/刪除只tbl_Distribution_DealerModel_OverAlts
那大部分都與當前記錄tbl_PrimaryDealerGroup
記錄(加盟上田tbl_PrimaryDealerGroup.DealerGroupID = tbl_Distribution_DealerModels_OverAlts.FirstDealerGroupID
)和當前tbl_SeriesManufacturer
記錄(連接在兩個公共字段: aus_series_cde
和ManufacturerID
)。 tbl_Distribution_DealerModel_OverAlts
位於與其他兩個表的關系的多方面:
如何讓子實體的datagridview
只顯示與兩個(或更多)父實體記錄中的每一個相關的記錄? 在這個項目中,我可能也有必要將一個孩子實體與三個或三個以上的父母聯系起來,因此可以得到普遍適用的答案
我終於自己解決了這個問題:
Private Sub bs_tblSM_tblPDG_CurrentChanged(sender As System.Object, e As System.EventArgs) Handles bs_tbl_Series_Manufacturer.CurrentChanged, bs_tbl_PrimaryDealerGroup.CurrentChanged
If bs_tbl_Series_Manufacturer.Current IsNot Nothing And bs_tbl_PrimaryDealerGroup.Current IsNot Nothing Then
Dim Series As String = bs_tbl_Series_Manufacturer.GetItemProperties(Nothing)("aus_series_cde").GetValue(bs_tbl_Series_Manufacturer.Current)
Dim Manufacturer As Byte = bs_tbl_Series_Manufacturer.GetItemProperties(Nothing)("ManufacturerID").GetValue(bs_tbl_Series_Manufacturer.Current)
Dim PDG As Integer = bs_tbl_PrimaryDealerGroup.GetItemProperties(Nothing)("DealerGroupID").GetValue(bs_tbl_PrimaryDealerGroup.Current)
Dim ChangeFilter As Boolean = False
If m_CurrentSeries <> Series Then
m_CurrentSeries = Series
ChangeFilter = True
End If
If m_CurrentManufacturer <> Manufacturer Then
m_CurrentManufacturer = Manufacturer
ChangeFilter = True
End If
If m_CurrentPDG <> PDG Then
m_CurrentPDG = PDG
ChangeFilter = True
End If
If ChangeFilter Then
Dim DlrMdlOverAlts As IEnumerable(Of tbl_Distribution_DealerModel_OverAlts)
DlrMdlOverAlts = From DDMOA As tbl_Distribution_DealerModel_OverAlts In m_Context.tbl_Distribution_DealerModel_OverAlts.Local.ToBindingList _
Where DDMOA.aus_series_cde = m_CurrentSeries And DDMOA.ManufacturerID = m_CurrentManufacturer And DDMOA.FirstDealerGroupID = m_CurrentPDG _
Select DDMOA
bs_tbl_Distribution_DealerModel_OverAlts.DataSource = DlrMdlOverAlts.ToList
Me.dgvtbcDealerModelOverAlts_aus_series_cde.DefaultCellStyle.NullValue = m_CurrentSeries.ToString
Me.dgvtbcDealerModelOverAlts_ManufacturerID.DefaultCellStyle.NullValue = m_CurrentManufacturer.ToString
Me.dgvtbcDealerModelOverAlts_FirstDealerGroupID.DefaultCellStyle.NullValue = m_CurrentPDG.ToString
bs_tbl_Distribution_DealerModel_OverAlts.ResetBindings(False)
ChangeFilter = False
End If
End If
End Sub
訣竅是不要嘗試在子BindingSource
的子BindingSource
使用父BindingSource
的DataMember
,而要在兩個父BindingSource
的CurrentChanged
中的代碼中關聯實體。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.