Foxtable(狐表)用户栏目专家坐堂 → loadchildren的问题反馈


  共有5890人关注过本帖树形打印复制链接

主题:loadchildren的问题反馈

帅哥哟,离线,有人找我吗?
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:113484 积分:577909 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/5/24 11:55:00 [显示全部帖子]

Foxtable是事件驱动的,按钮2的执行会比子表的加载早。延迟一下再调用按钮2

这个逻辑是不合理的,既然想移除子表的数据,又何必做父子表的同步加载!

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:113484 积分:577909 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/5/24 13:35:00 [显示全部帖子]

那就是事件触发顺序的问题了。这种情况无解。

用全局变量控制一下,表A的afterload事件加个判断,子表是否需要加载

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:113484 积分:577909 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/5/31 14:25:00 [显示全部帖子]

先来捋一捋

1、先点击“重载子表”,触发“重载子表”的click事件
2、“重载子表”的click事件加载表A,表A加载后会触发表格的afterload事件,很明显,afterload事件必须等待表格加载完毕才能触发,所以并不是马上触发的,我估计是使用回调机制触发(类似weui里ajax函数submitAjaxForm的回调参数用法),而按照.net的机制,事件不是异步的,新的事件必须等待之前的事件执行完毕,也就是afterload事件必须等待“重载子表”的click事件执行完毕。
3、“重载子表”的click事件加载表A后紧接着就执行按钮“重载id为2的子表”的代码,注意performClick会马上执行按钮2的代码,而不是等待“重载子表”的click事件执行完毕才会执行,也就是这时“重载子表”的click事件的代码还不算执行完毕,同时表格的afterload事件也还在等待执行中。等“重载子表”的所有代码执行完毕后,“重载子表”的click事件才算执行完毕,才会执行表格的afterload事件

如果要达到效果,需要延迟执行按钮2的代码,利用计时器事件,下面用法计时器事件触发会在表格afterload之后
窗口timetick事件
e.Form.TimerEnabled = False
e.Form.Controls("Button2").performClick

“重载子表”的click事件
With DataTables("表A")
    .LoadFilter = ""
    .Load
End With
e.Form.TimerInterval = 100
e.Form.TimerEnabled = True

 回到顶部