Foxtable(狐表)用户栏目专家坐堂 → [求助]代码生成的列数据没能触发datacolchanged事件


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

主题:[求助]代码生成的列数据没能触发datacolchanged事件

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


加好友 发短信
等级:五尾狐 帖子:1141 积分:11272 威望:0 精华:0 注册:2017/9/26 16:30:00
[求助]代码生成的列数据没能触发datacolchanged事件  发帖心情 Post By:2019/2/21 19:54:00 [只看该作者]

老师好!
如图测试:剪切单元格内容,再粘贴回原处。
"合并审理","开庭日期"两列发生变化,但是数据表的datacolchanged事件没有运行,需要重置"开庭日期"列以后,“测试表”才能新增行。
里面有一段屏蔽代码systemready = False,这怎样解决?
谢谢!



datacolchanged事件:
Select Case e.DataCol.name         '写入测试表
    Case "合并审理","开庭日期"
        If e.DataCol.Name = "开庭日期" And e.NewValue IsNot Nothing Then
            'If e.NewValue IsNot Nothing Then
            Dim dr = DataTables("测试").Find("[案号] = '" & e.DataRow("案号") & "'and [开庭日期] = '" & e.DataRow("开庭日期") & "'")
            If dr Is Nothing Then
                dr = DataTables("测试").AddNew
                dr("案号") = e.DataRow("案号")
            End If
            dr("案件数量") = e.DataRow("案件数量")
        Else
            Return
        End If
End Select


图片点击可在新窗口打开查看此主题相关图片如下:截屏图片.jpg
图片点击可在新窗口打开查看

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:ok测试日期列.table



[此贴子已经被作者于2019/2/21 20:17:45编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110648 积分:563148 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/2/21 21:02:00 [只看该作者]

Select Case e.DataCol.name         '写入测试表
    Case "合并审理","开庭日期"
        If e.DataRow.isnull("合并审理") = False And e.DataRow.isnull("开庭日期") = False Then
            'If e.NewValue IsNot Nothing Then
            Dim dr = DataTables("测试").Find("[案号] = '" & e.DataRow("案号") & "'and [开庭日期] = '" & e.DataRow("开庭日期") & "'")
            If dr Is Nothing Then
                dr = DataTables("测试").AddNew
                dr("案号") = e.DataRow("案号")
            End If
            dr("案件数量") = e.DataRow("案件数量")
        End If
End Select

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


加好友 发短信
等级:五尾狐 帖子:1141 积分:11272 威望:0 精华:0 注册:2017/9/26 16:30:00
  发帖心情 Post By:2019/2/22 11:38:00 [只看该作者]

蓝老师好!

但是只增加了一行,应该增加4行才对。

是什么原因?


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


加好友 发短信
等级:五尾狐 帖子:1141 积分:11272 威望:0 精华:0 注册:2017/9/26 16:30:00
  发帖心情 Post By:2019/2/24 22:05:00 [只看该作者]

甜老师好!
非常感谢老师的帮助,如果有时间再帮我看看这个实例吧。
数据表的datacolchanged事件没有运行,是不是那一段屏蔽代码造成的,怎样解决?

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


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

 

systemready = false 会导致所有事件都会触发的。你可以移除。

 

或者是,在代码最后,重置对应的行。

 

 


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


加好友 发短信
等级:五尾狐 帖子:1141 积分:11272 威望:0 精华:0 注册:2017/9/26 16:30:00
  发帖心情 Post By:2019/5/28 17:03:00 [只看该作者]

甜老师好!

怎样在表事件里"......重置对应的行。"?


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


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

以下是引用天一生水在2019/5/28 17:03:00的发言:

甜老师好!

怎样在表事件里"......重置对应的行。"?

 

请具体说明你的逻辑。在什么表事件,要重置什么行?


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


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

如果需要重置datacolchanged,参考

 

http://www.foxtable.com/webhelp/scr/1587.htm

 


 回到顶部
帅哥哟,离线,有人找我吗?
天一生水
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1141 积分:11272 威望:0 精华:0 注册:2017/9/26 16:30:00
  发帖心情 Post By:2019/5/29 10:33:00 [只看该作者]

甜老师好!我写了两处的事件代码,都没有运行完全,只能写入“测试表”一行数据。

但是,点击菜单按钮-重置列,就没有问题,可以写入四行数据。

  

1、DataColChanged事件:

......
Select Case e.DataCol.name         '写入测试表
    Case "合并审理","开庭日期"
        If e.DataRow.isnull("合并审理") = False And e.DataRow.isnull("开庭日期") = False Then
            'If e.NewValue IsNot Nothing Then
            Dim dr = DataTables("测试").Find("[案号] = '" & e.DataRow("案号") & "'and [开庭日期] = '" & e.DataRow("开庭日期") & "'")
            If dr Is Nothing Then
                dr = DataTables("测试").AddNew
                dr("案号") = e.DataRow("案号")
            End If
            dr("案件数量") = e.DataRow("案件数量")
            dr("开庭日期") = e.DataRow("开庭日期")
        End If
End Select

 

2、ValidateEdit事件:

DataTables("数据表").DataCols("合并审理").RaiseDataColChanged(e.Row("合并审理") <> e.Row.DataRow.OriginalValue("合并审理"))


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:ok测试日期列.table


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


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

如果要重置全部行,参考
 
DataTables("数据表").DataCols("合并审理").RaiseDataColChanged()
 
如果要根据条件重置列,请select查询每一行数据,然后对比值

 

If dr("合并审理") <> dr.OriginalValue("合并审理") Then

    DataTables("数据表").DataCols("合并审理").RaiseDataColChanged(dr)

End If

 


 回到顶部
总数 14 1 2 下一页