我有一个表SampleData,它有一个子表,测量。在我的WinForm中,frmMain,一个SampleData对象绑定到SampleDataBindingSource; MeasurementsBindingSource将SampleDataBindingSource作为其数据源,将Measurements作为其DataMember。一组文本框绑定到SampleDataBindingSource; datagridview绑定到MeasurementsBindingSource。绑定到子实体集的子绑定源不会更新
对于frmMain,我还有一个Presenter类preMain,它包含SampleData类型的属性CurrentSample。 SampleDataBindingSource.DataSource
被绑定到preMain的CurrentSample属性。
当足够的测量属性的已分配,它计算FiringFactor和,如果FiringFactor不为1,它增加了一个测量项目的CurrentSample的测量EntitySet的:
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方法确实运行正常,我最终将另一个Measurement项添加到CurrentSample的Measurements实体集中。但是,datagridview不显示新行,而MeasurementsBindingSource只有1条记录(但是CurrentSample.Measurements.Count = 2
)。
为什么CurrentSample.Measurements
的变化不会传播到MeasurementsBindingSource
?我试过MeasurementsBindingSource.ResetBindings(False)
,MeasurementsDataGridView.Refresh
,SampleDataBindingSource.ResetBindings(False)
,但似乎没有更新MeasurementsBindingSource
或其datagridview。