Foxtable(狐表)用户栏目专家坐堂 → [求助]DataColChanged事件中的代码改到AfterEdit事件中?


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

主题:[求助]DataColChanged事件中的代码改到AfterEdit事件中?

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


加好友 发短信
等级:五尾狐 帖子:1134 积分:11088 威望:0 精华:2 注册:2008/9/1 10:45:00
[求助]DataColChanged事件中的代码改到AfterEdit事件中?  发帖心情 Post By:2010/3/16 14:53:00 [只看该作者]

If e.DataCol.Name = "检查编号" Then
    Dim dt As DataTable = DataTables("序号")
    Dim r As DataRow
    r = dt.Find("[检查编号] = '" & e.datarow("检查编号") & "'")
    If r IsNot Nothing
        e.datarow("单位") = r("单位")
        e.datarow("检查时间") = r("检查时间")
        e.datarow("日序") = e.datarow("检查编号") & e.DataRow("_Identify")
    end if
end if
这段代码是表事件DataColChanged中的,执行正常,由于在导入数据时也触发DataColChanged事件,由于“日序”列是根据“编号”和("_Identify")生成的,导入时该列内容会变。我想把这段代码改到AfterEdit事件中:改成这样确不执行:
If e.col.DataCol.Name = "检查编号" Then
    Dim dt As DataTable = DataTables("序号")
    Dim r As DataRow
    r = dt.Find("[检查编号] = '" & e.row.datarow("检查编号") & "'")
    If r IsNot Nothing
        e.row.datarow("单位") = r("单位")
        e.row.datarow("委派会计") = r("委派会计")
        e.row.datarow("检查时间") = r("检查时间")
        e.row.datarow("单位") = r("单位")
        e.row.datarow("使用单位") = r("使用单位")
        e.row.datarow("日序") = e.row.datarow("检查编号") & e.row.DataRow("_Identify")
    end if
end if
请问应该怎么改?
或者有什么办法在导入数据时屏蔽DataColChanged事件也可以。谢谢大家!

 回到顶部
帅哥,在线噢!
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47480 积分:251289 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/3/16 15:07:00 [只看该作者]

比较一下两者的E参数属性,所有的e.Row应该改为e.datarow

另外这个事件不一定对导入有效。

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


加好友 发短信
等级:五尾狐 帖子:1134 积分:11088 威望:0 精华:2 注册:2008/9/1 10:45:00
  发帖心情 Post By:2010/3/16 15:24:00 [只看该作者]

If e.col.DataCol.Name = "检查编号" Then
改成:
If e.DataCol.Name = "检查编号" Then 在编辑器中提示错误:

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

 r = dt.Find("[检查编号] = '" & e.row.datarow("检查编号") & "'")
改成:
 r = dt.Find("[检查编号] = '" & e.datarow("检查编号") & "'") 在编辑器中提示错误:

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

 回到顶部
帅哥,在线噢!
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47480 积分:251289 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/3/16 15:35:00 [只看该作者]

第一个图:同样e.DataCol也应该改为e.Col
第二个图:这样有一个e.DataRow没有改为e.Row

其实你一打开代码编辑器,该事件的e参数就已经列出来了的。


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


加好友 发短信
等级:五尾狐 帖子:1134 积分:11088 威望:0 精华:2 注册:2008/9/1 10:45:00
  发帖心情 Post By:2010/3/16 15:51:00 [只看该作者]

老大改成这样了,编辑器通过了,可是就是不执行啊!!硬着头皮再问!!

If e.col.Name = "检查编号" Then
    Dim dt As dataTable = dataTables("序号")
    Dim r As dataRow
    r = dt.Find("[检查编号] = '" & e.row("检查编号") & "'")
    If r IsNot Nothing
        e.row("单位") = r("单位")
        e.row("委派会计") = r("委派会计")
        e.row("检查时间") = r("检查时间")
        e.row("使用单位") = r("使用单位")
        e.row("日序") = e.row("检查编号") & e.row("_Identify")
    end if
end if

 回到顶部
帅哥,在线噢!
狐狸爸爸
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47480 积分:251289 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/3/16 15:58:00 [只看该作者]

没有看出什么问题,你做个简单的例子文件传上来,并写上你的代码。

 

 


 回到顶部
帅哥,在线噢!
狐狸爸爸
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47480 积分:251289 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/3/16 15:59:00 [只看该作者]

关闭屏蔽事件,可以在DatacolChanged加一个判断,某全局变量等于True时才执行,这样可以在导入是将此变量设为False,导入结束后将此变量设置为True,达到间接屏蔽事件的目的

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


加好友 发短信
等级:五尾狐 帖子:1134 积分:11088 威望:0 精华:2 注册:2008/9/1 10:45:00
  发帖心情 Post By:2010/3/16 16:02:00 [只看该作者]

多谢,就用这招了,老大就是老大。哈哈

 回到顶部