以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]表达式列数值变动不触发DataColChanged?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=7915)

--  作者:i52117
--  发布时间:2010/8/19 14:08:00
--  [求助]表达式列数值变动不触发DataColChanged?
请问各位大侠,表达式列数值变动不触发DataColChanged?
--  作者:czy
--  发布时间:2010/8/19 14:32:00
--  

如果表达式列是用表达式计算出来的,应该不会触动.

不过可以增加一个全局变量

DataColChanging事件中将表达式列的值赋于全局变量,如:
Vars("变量") = e.DataRow("表达式列")

DataColChanged事件代码
If e.DataRow("表达式列") <> Vars("变量")
    MessageBox.Show("有变动")
End If


--  作者:i52117
--  发布时间:2010/8/19 14:38:00
--  
谢谢C版主!
--  作者:飞鱼
--  发布时间:2010/10/8 15:13:00
--  
以下是引用czy在2010-8-19 14:32:00的发言:

如果表达式列是用表达式计算出来的,应该不会触动.

不过可以增加一个全局变量

DataColChanging事件中将表达式列的值赋于全局变量,如:
Vars("变量") = e.DataRow("表达式列")

DataColChanged事件代码
If e.DataRow("表达式列") <> Vars("变量")
    MessageBox.Show("有变动")
End If

我做过一个填充的代码,填充的数据也不能触发DataColChanged事件,是否可以采用同样的方法解决?


--  作者:wcs
--  发布时间:2010/10/8 16:15:00
--  

填充的,会触发DataColChanged事件,但是如果你填充多列数据,DataColChanged的条件不易设置。

 

所以,填充进来的数据,可用代码来一并计算,不用事件。


--  作者:kylin
--  发布时间:2010/10/8 17:56:00
--  
以下是引用czy在2010-8-19 14:32:00的发言:

如果表达式列是用表达式计算出来的,应该不会触动.

不过可以增加一个全局变量

DataColChanging事件中将表达式列的值赋于全局变量,如:
Vars("变量") = e.DataRow("表达式列")

DataColChanged事件代码
If e.DataRow("表达式列") <> Vars("变量")
    MessageBox.Show("有变动")
End If

另外一个思路:看一下表达式是与哪几个字段有关,如果不多的话,就用这几个字段的变化来处理,比较直观吧

 


--  作者:czy
--  发布时间:2010/10/8 19:24:00
--  
以下是引用kylin在2010-10-8 17:56:00的发言:

另外一个思路:看一下表达式是与哪几个字段有关,如果不多的话,就用这几个字段的变化来处理,比较直观吧

 

 

 是的。

不过楼主发这个贴的时候还发了另外一贴,大致意思是说直接判断表达式列,当初我也建议判断表达式列引用的字段或参与计算的字段。