楼主的写法 不死循环才怪,17楼的是对的.具体看看这个:
AfterLoad
如果还没有接触动态数据加载,可以暂时忽略本事件。
在重新加载数据后执行。
不管是通过加载树加载数据,还是自己编写代码执行Load方法加载数据,都会执行此事件。
e参数属性:
DataTable:触发事件的DataTable
示例一
假定有两个表,分别是订单和订单明细,两者通过"订单ID"列关联起来,订单是父表,订单明细是子表,因为每个订单对应有若干订单明细。
由于数据量比较大,决定采用动态加载,每次只加载一定数量的订单进行处理,显然作为一个合格的系统,应该同时加载这些订单的订单明细。
要完成这样的任务很简单,只需在订单表的AfterLoad事件中加入以下代码即可:
Dim ids As
String
For
Each dr As
DataRow
In
DataTables("订单").DataRows
ids = ids & "," & dr("订单ID")
Next
ids= ids.Trim(",")
DataTables("订单明细").LoadFilter = "订单ID In (" & ids & ")"
DataTables("订单明细").Load()
上述代码会自动扫描已加载订单的订单ID,并合成订单明细表的加载条件,最后重新加载订单明细表。
假定订单表加载了6个订单,其订单ID分别为1、2、6、7、8、9,显然上述代码为订单明细表合成的加载条件为:订单ID In
(1,2,6,7,8,9),这样重新加载订单明细表时,将只加载这6个订单的订单明细。
可见代码的关键在于In运算符,在学习SQL语句的时候,我们会介绍此运算符。
注意这个写法是 数值列的写法.