你把第二个按钮的代码改为:
DataTables("表B").LoadFilter = "pid=2"
DataTables("表B").Load
MessageBox.Show(DataTables("表B").LoadFilter)
可以看到你设置的条件确实生效了,而且确实只加载了pid为2行,只是单击对话框的确定按钮之后,才开始执行LoadChidren,所以看起来子表条件没有生效。
所以这个不是Loadchildren问题,是代码代码执行顺序的问题:
AfterLoad事件并不会在Load执行完毕之后马上触发,而是等所有代码执行完毕,系统空闲后才触发
这个执行顺序目前时不能调整的,首先当时这么设计肯定有原因,其次调整了可能会衍生出其他问题。
所以特殊情况,就不要在AfterLoad事件执行LoadChidren了,父表的load和loadchildren都放在同一个按钮吧,确保会按预期的顺序执行。
[此贴子已经被作者于2022/5/31 15:00:00编辑过]