簡體   English   中英

在與多個父實體記錄相關的DataGridView控件中顯示子數據

[英]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_cdeManufacturerID )。 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使用父BindingSourceDataMember ,而要在兩個父BindingSourceCurrentChanged中的代碼中關聯實體。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM