Rss & SiteMap
Foxtable(狐表) http://www.foxtable.com
主表A(ID、Remark)与子表B(AID、Remark、列1、列2)关联(A.ID=B.AID),同步更新表数据
子表B的DataColChanged事件代码:(通过AID将表A数据列Remark内容复制到表B的Remark列)
If e.DataCol.Name = "AID" Then
Dim dr As DataRow = e.DataRow.GetParentRow("A")
If dr IsNot Nothing Then
e.DataRow("Remark") = dr("Remark")
Else
e.DataRow("Remark") = Nothing
End If
End If
当更新主表A的ID列时,我发现是先执行表B的DataColChanged事件,再执行表A的DataColChanged事件,
导致表B里的Remark列内容为空!
有什么办法能解决?
狐爸,你没看懂我说的问题,再看清楚。
我已经设了同步更新列内容,所以在表A的ID列修改时,表B的ID列也修改,从而触发表B的DataColChanged事件,但是这里有个顺序问题,就是它先执行了表B的DataColChanged事件再把表A的ID修改完成,导致表B的DataColChanged事件里取得的ID还是原来的数据不是修改后的数据。
1、设置关联的时候,取消同步更新关联列选项
2、代码应该设置在DataColChanging事件,而不是DataColChanged事件。
取消同步更新关联列的话,那我修改表A的ID时,表B的AID就不会更新了,更不会触发表B的DataColChanged事件和DataColChanging事件
这个怎么没人解决?
更改父表的时候,子表联动!
这个联动我通过关联的时候勾选了同步更新关联列做出来,但是父表里的其它数据带不出到子表,我用的不是表达式列!
我是在子表的DataColChanged事件里写代码来获取父表的数据带到子表里。。
在表A的DataColChanged加入代码:
if e.DataCol.Name = "ID" Then
For each dr as datarow in e.DataRow.GetChildRows("表B")
dr("Remark") = e.Datarow("Remark")
next
end if
已解决!
不过总体来说这个解决方法不够合理,主表关联列数据修改时,子表的DataColChanged事件代码执行变得毫无意义,却又不能删除,影响运行速度。