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


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

主题:[求助]代码生成的列数据没能触发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


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

蓝老师好!

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

是什么原因?


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


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

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

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


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

甜老师好!

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


 回到顶部
帅哥哟,离线,有人找我吗?
天一生水
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | 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


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


加好友 发短信
等级:五尾狐 帖子:1141 积分:11272 威望:0 精华:0 注册:2017/9/26 16:30:00
  发帖心情 Post By:2019/5/29 12:09:00 [显示全部帖子]

行标记为修改状态时,在命令窗口执行下列代码,也没有重置。

 

For Each dr As DataRow In DataTables("数据表").DataRows
    If dr("合并审理") <> dr.OriginalValue("合并审理") Then
        DataTables("数据表").DataCols("合并审理").RaiseDataColChanged(dr)
    End If
Next

 


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

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


加好友 发短信
等级:五尾狐 帖子:1141 积分:11272 威望:0 精华:0 注册:2017/9/26 16:30:00
  发帖心情 Post By:2019/5/29 15:24:00 [显示全部帖子]

看了老师的回复,代码没动,再运行就行了,真奇怪~

但是放在表事件里不行,应该是没有编辑的动作吧,可以放到窗口的afterload或按钮中。


 回到顶部