加载后有一个问题,比如主表加载了9行数据,主表上的第一行是显示的是最先加载的那一行数据,但子表却是显示的主表上的每9行的数据,为什么会这样呢?要怎么办才能实现子表显示最先加载的那行数据的子表?
如下是afterload中的代码:
Dim dr As DataRow
dr = DataTables("dtbSet").Find("winFtbN = '" & e.DataTable.name & "' and Rc is Not Null")
If dr IsNot Nothing Then
Dim MRcol As String = dr("Rc")
'查找当前加载表的窗口子表,同步加载其数据
Dim drs As List(of DataRow) = DataTables("dtbSet").Select("winFtbN = '" & e.DataTable.name & "'")
If drs IsNot Nothing Then
'如果主表没数据不加载明细,
If e.DataTable.DataRows.Count = 0 Then
For Each dr In drs
Dim CRcol As String = dr("Rc") '获取子表关联列
'Tables(dr("wintbN")).Cols.Remove(CRcol) '移除子表关联列不显示
DataTables(dr("wintbN")).LoadFilter = "[_Identify] < 0 " '不加载
DataTables(dr("wintbN")).Load
Next
Else '遍历加载各个子表
Dim mdr As DataRow = e.DataTable.DataRows(0) '主表第一行
LockBaseMainForm
For Each dr In drs
Dim CRcol As String = dr("Rc") '获取子表关联列
Dim sql As String = "Select * from " & dr("tbN") & " where " & CRcol & " = '" & mdr(MRcol) & "'"
DataTables(dr("wintbN")).SQLLoad(sql)
Next
UnLockBaseMainForm
End If
End If
End If