你提供的数据有问题,好像无法测试呢。
单价是通过 rgdj cldj jxdj计算得出的。
所以关键在于这三列能够自动计算。
根据你的代码分析,父表只有定额编号列内容发生变化后,才会重算这些列。
所以现在的问题是,子表的材料编号、定额用量发生变化时,能够重置父行的定额编号列,使得父表Datacolchanged事件中的代码能够执行。
其实帮助对此已经有说明,你可以在子表的DataColChanged事件中加入代码:
Select Case e.DataCol.Name
Case "材料编号","材料名称"
Dim dr as DataRow = dr.GetParentRow("实体预算书")
If dr Isnot Nothing Then
DataTables("实体预算书").DataCols("定额编号").RaiseDataColChanged(dr)
End If
End Select