子テーブルMeasurementsを持つテーブルSampleDataがあります。私のWinForm、frmMainでは、単一のSampleDataオブジェクトがSampleDataBindingSourceにバインドされています。MeasurementsBindingSourceには、データソースとしてSampleDataBindingSourceがあり、DataMemberとしてMeasurementsがあります。テキストボックスのセットはSampleDataBindingSourceにバインドされています。datagridviewはMeasurementsBindingSourceにバインドされています。
frmMainの場合、SampleDataタイプのプロパティCurrentSampleを含むプレゼンタークラスpreMainもあります。はSampleDataBindingSource.DataSource
preMainのCurrentSampleプロパティにバインドされています。
Measurementsのプロパティが十分に割り当てられると、FiringFactorが計算され、FiringFactorが1でない場合は、CurrentSampleのMeasurementエンティティセットに別のMeasurementアイテムが追加されます。
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の値を入力すると、UpdateFiringFactorメソッドが正しく実行され、最終的に別の測定項目がCurrentSampleの測定エンティティセットに追加されます。ただし、datagridviewには新しい行が表示されず、MeasurementsBindingSourceには1つのレコードしかありません(ただしCurrentSample.Measurements.Count = 2
)。
CurrentSample.Measurements
変更がに伝播しないのはなぜMeasurementsBindingSource
ですか?MeasurementsBindingSource.ResetBindings(False)
、、を試しましたがMeasurementsDataGridView.Refresh
、SampleDataBindingSource.ResetBindings(False)
何も更新されていないようMeasurementsBindingSource
です。