Powiązanie potomka powiązanego z zestawem jednostek podrzędnych nie jest aktualizowane
Mam tabelę SampleData, która ma tabelę podrzędną, Measurements. W moim WinForm, frmMain, pojedynczy obiekt SampleData jest powiązany ze źródłem SampleDataBindingSource; MeasurementsBindingSource ma SampleDataBindingSource jako swoje źródło danych, a Measurements jako DataMember. Zestaw pól tekstowych jest powiązany z SampleDataBindingSource; datagridview jest powiązany z MeasurementsBindingSource.
Dla frmMain mam także klasę prezentera, preMain, która zawiera właściwość CurrentSample typu SampleData. TheSampleDataBindingSource.DataSource
jest związany z właściwością CurrentSample preMain.
Gdy przypisano wystarczającą liczbę właściwości w pomiarach, oblicza współczynnik FiringFactor, a jeśli współczynnik FiringFactor nie jest równy 1, dodaje kolejny element pomiaru do zestawu jednostek pomiaru 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
Kiedy wprowadzam wartości CrucibleMass, CrucibleSampleMass i CrucibleSampleFiredMass w datagridview, metoda UpdateFiringFactor działa poprawnie i ostatecznie otrzymuję kolejny element pomiaru dodany do zestawu jednostek pomiaru CurrentSample. Jednak datagridview nie pokazuje nowego wiersza, a MeasurementsBindingSource ma tylko 1 rekord (aleCurrentSample.Measurements.Count = 2
).
Dlaczego zmianaCurrentSample.Measurements
nie propagowaćMeasurementsBindingSource
? próbowałemMeasurementsBindingSource.ResetBindings(False)
, MeasurementsDataGridView.Refresh
, SampleDataBindingSource.ResetBindings(False)
, ale nic nie wydaje się aktualizowaćMeasurementsBindingSource
lub jego datagridview.