以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  编译错误:“”“col”不是datacoleventargs的成员  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=90200)

--  作者:akilau0012
--  发布时间:2016/9/7 16:18:00
--  编译错误:“”“col”不是datacoleventargs的成员
 按照帮助帮助文件

通过子表触发父表事件

还有一个特殊情况,表达式列并非由本表的列计算得出,而是由子表数据计算得出。
例如假定订单表有个数量列,是表达式列,用于累计订单明细表的数量,其表达式为:
Sum(Child.数量)。
再假定订单表的DataColChanged事件设置了如下代码:

If e.Col.name = "数量" Then
  \'相关计算代码 
End If

当我们在订单明细表输入数量时,订单表的数量会自动更新,但是上面的代码永远不会执行,因为数量是一个表达式列,不会触发事件。
我们需要在订单明细表的
DataColChanged事件加上代码:

If e.Col.name = "数量" Then
    Dim
pr As DataRow = e.DataRow.GetParentRow("订单") \'找出对应的父行
    If
pr IsNot Nothing Then
        DataTables(
"订单").DataCols("数量").RaiseDataColChanged(pr\'通知系统此父行的数量列发生了改变,触发DataColChanged事件
    End If
End If




在两个表中添加代码,出现   编译错误:“”“col”不是datacoleventargs的成员  这个是什么问题呢


--  作者:有点蓝
--  发布时间:2016/9/7 16:20:00
--  
http://www.foxtable.com/webhelp/scr/0625.htm

e参数属性:

DataTable:返回发生数据更改的数据表。
DataRow:  返回发生数据更改的数据行。
DataCol:  返回发生数据更改的数据列。
NewValue: Object类型,表示新的值。
OldValue: Object类型,表示旧的值


If e.DataCol.name = "数量" Then
  \'相关计算代码  
End If