Foxtable(狐表)用户栏目专家坐堂 → 窗口临时表DataColChanged全局事件无效


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

主题:窗口临时表DataColChanged全局事件无效

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


加好友 发短信
等级:幼狐 帖子:62 积分:695 威望:0 精华:0 注册:2018/2/23 14:51:00
窗口临时表DataColChanged全局事件无效  发帖心情 Post By:2019/5/23 16:06:00 [只看该作者]

窗口中,有一个Table控件
窗口的AfterLoad中,创建临时表
并打开全局的 DataColChanging 和 DataColChanged
然后再全局表事件中添加代码
但是DataColChanging可以正确触发,但是DataColChanged触发不到
为什么呢?
修改表里的数据后,行头并没有改变颜色成未保存行的状态,和 DataColChanged 没有触发 一个原因?

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


加好友 发短信
等级:幼狐 帖子:62 积分:695 威望:0 精华:0 注册:2018/2/23 14:51:00
  发帖心情 Post By:2019/5/23 16:07:00 [只看该作者]

AfterLoad 中的代码:

Dim dt As new  DataTableBuilder("stock_find") '创建临时表
dt.adddef("型号",Gettype(String),64)
dt.adddef("数量",Gettype(Integer))

With Tables("stock_Table_stock")
    .DataSource = dt.Build(True)
    .Cols("型号").Width = 180
    .Cols("数量").Width = 110
    .AddNew(20)
    .DataTable.Save
    .AllowEdit = True

     .Cols("型号").DropForm = "fast_input_pn"
    .DataTable.GlobalHandler.KeyPressEdit = True
    .DataTable.GlobalHandler.KeyDownEdit = True
    .DataTable.GlobalHandler.ChangeEdit = True
    .DataTable.GlobalHandler.ValidateEdit = True

    .DataTable.GlobalHandler.DataColChanging = True
    .DataTable.GlobalHandler.DataColChanged = True
End With

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


加好友 发短信
等级:幼狐 帖子:62 积分:695 威望:0 精华:0 注册:2018/2/23 14:51:00
  发帖心情 Post By:2019/5/23 16:13:00 [只看该作者]

把 表格控件的 作为副本属性 修改为 False 后,
改变行内容,行头会显示未保存的颜色了
但是 DataColChanged全局表时间还是没有触发


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


加好友 发短信
等级:幼狐 帖子:62 积分:695 威望:0 精华:0 注册:2018/2/23 14:51:00
  发帖心情 Post By:2019/5/23 16:15:00 [只看该作者]

RaiseDataColChanged 才可以触发全局表的 DataColChanged 事件

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/5/23 16:23:00 [只看该作者]

试试改成


Dim dt As new  DataTableBuilder("stock_find") '创建临时表
dt.adddef("型号",Gettype(String),64)
dt.adddef("数量",Gettype(Integer))

e.form.controls("Table_stock").Table.datasource = dt.BuildDataSource
With e.form.controls("Table_stock").Table
    .Cols("型号").Width = 180
    .Cols("数量").Width = 110
    .AddNew(20)
    .DataTable.Save
    .AllowEdit = True
   
   
    .Cols("型号").DropForm = "fast_input_pn"
    .DataTable.GlobalHandler.KeyPressEdit = True
    .DataTable.GlobalHandler.KeyDownEdit = True
    .DataTable.GlobalHandler.ChangeEdit = True
    .DataTable.GlobalHandler.ValidateEdit = True
   
   
    .DataTable.GlobalHandler.DataColChanging = True
    .DataTable.GlobalHandler.DataColChanged = True
End With

 


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


加好友 发短信
等级:幼狐 帖子:62 积分:695 威望:0 精华:0 注册:2018/2/23 14:51:00
  发帖心情 Post By:2019/5/23 16:29:00 [只看该作者]

天呐,可以了
啥原因啊
主要是 e.form.controls("Table_stock").Table.datasource = dt.BuildDataSource 这句话导致的
下面那句 With 改不改都不影响

.DataSource = dt.Build(True) 为什么不行呢?


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


加好友 发短信
等级:幼狐 帖子:62 积分:695 威望:0 精华:0 注册:2018/2/23 14:51:00
  发帖心情 Post By:2019/5/23 16:44:00 [只看该作者]

确实好使了,谢谢啦!!!

原因是什么呢?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/5/23 18:44:00 [只看该作者]

尽量这样处理

 

e.form.controls("Table_stock").Table.datasource = dt.BuildDataSource


 回到顶部