BeforeLoad

如果还没有接触动态数据加载,可以暂时忽略本事件。

在重新加载数据之前执行,也就是执行Load方法之前执行,可以在这里动态修改加载条件。
不管是通过加载树加载数据,还是自己编写代码执行Load方法加载数据,都会执行此事件。

e参数属性:

DataTable:触发事件的DataTable
Cancel:   逻辑属性,如果设置为True,将取消本次加载。

示例

假定订单表有一个雇员列,希望每个雇员从后台加载数据的时候,只能加载自己负责的订单。
为此可以将BeforeLoad事件设置为:

If User.Group = "雇员" '如果用户分组是雇员
    Dim fl As String = "[雇员] = '" & User.Name & "'"
   
If e.DataTable.LoadFilter = "" Then
        e.
DataTable.LoadFilter = fl
    ElseIf
e.DataTable.LoadFilter.IndexOf(fl) < 0 Then
'如果没有包括雇员条件
        e.
DataTable.LoadFilter = "(" & e.DataTable.Loadfilter & ") And (" & fl & ")"
   
End If
End
If

提示:

合并两个条件表达式的时候,建议先用括号将两个表达式分别括起来,然后再合并,否则容易出问题。

例如第一个表达式为"A And B",第二个是"C Or D",如果不用括号,直接合并的结果为:

A And B And C Or D

此时,如果A、B、C三个条件不成立,D条件成立,那么合并后的表达式"A And B And C Or D"是成立的,显然这和我们的本意"A和B必须同时成立,同时C和D至少成立一个"相违背的。

如果加上括号合并,那么合并后的表达式为:

(A And B) And (C Or D)

这样就完全符合我们的本意了。


本页地址:http://www.foxtable.com/webhelp/topics/2057.htm