Дочерний источник привязки, связанный с дочерним набором сущностей, не обновляется
У меня есть таблица SampleData с дочерней таблицей Measurements. В моей WinForm, frmMain, один объект SampleData связан с SampleDataBindingSource; MeasurementsBindingSource имеет SampleDataBindingSource в качестве источника данных и Measurements в качестве DataMember. Набор текстовых полей привязан к SampleDataBindingSource; сетка данных связана с MeasurementsBindingSource.
Для frmMain у меня также есть класс презентатора preMain, который содержит свойство CurrentSample типа SampleData.SampleDataBindingSource.DataSource
привязан к свойству CurrentSample preMain.
Когда достаточное количество свойств в измерениях было назначено, оно вычисляет FiringFactor и, если значение FiringFactor не равно 1, оно добавляет другой элемент измерения в набор сущностей Measurement для CurrentSample:
Partial Class Measurement
Private Sub UpdateFiringFactor()
Dim necessaryDataIsAvailable As Boolean = (Me.CrucibleMass IsNot Nothing And _
Me.CrucibleSampleFiredMass IsNot Nothing And _
Me.CrucibleSampleMass IsNot Nothing)
If necessaryDataIsAvailable Then
Me.FiringFactor = CDbl((Me.CrucibleSampleFiredMass - Me.CrucibleMass) / (Me.CrucibleSampleMass - Me.CrucibleMass))
If Me.FiringFactor <> 1 Then
Me.SampleData.AddNewMeasurement()
End If
End If
End Sub
Private Sub OnCrucibleMassChanged()
UpdateFiringFactor()
End Sub
Private Sub OnCrucibleSampleFiredMassChanged()
UpdateFiringFactor()
End Sub
Private Sub OnCrucibleSampleMassChanged()
UpdateFiringFactor()
End Sub
End Class
Когда я ввожу значения для CrucibleMass, CrucibleSampleMass и CrucibleSampleFiredMass в datagridview, метод UpdateFiringFactor работает правильно, и я в итоге получаю другой элемент Measurement, добавленный в набор сущностей Measurements CurrentSample. Однако в сетке данных новая строка не отображается, а у MeasurementsBindingSource есть только 1 запись (ноCurrentSample.Measurements.Count = 2
).
Почему изменения вCurrentSample.Measurements
не распространяться наMeasurementsBindingSource
? я пыталсяMeasurementsBindingSource.ResetBindings(False)
, MeasurementsDataGridView.Refresh
, SampleDataBindingSource.ResetBindings(False)
, но ничего не обновляетMeasurementsBindingSource
или его датагридвью.