以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  追加数据问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=178393)

--  作者:swagger
--  发布时间:2022/7/2 20:50:00
--  追加数据问题
打开窗口和按钮代码,追加数据不一样。两个表,订单和订单明细。

按钮1 代码:
With DataTables("订单明细")
    .LoadFilter = "" 
    .LoadTop = 20
    .LoadPage = 0
    .Load()
End With

With DataTables("订单明细")
    If .LoadPage < .TotalPages - 1 Then
        .LoadPage = .TotalPages - 1
        .Load()
    End If
End With

点击按钮1, 然后点击窗口1的订单表是正常追加数据的(点击一个订单会追加同一个编号的订单明细),订单表 currentchanged:
If e.Table.current IsNot Nothing Then


Dim dr As DataRow = e.Table.Current.DataRow
If dr IsNot Nothing Then
Dim wz As Integer = Tables("订单").FindRow(dr)
 If wz >=0 Then
      Tables("订单").Position = wz 
End If 
End If



Dim Filter As String = "订单编号 = \'" & e.Table.Current("订单编号") & "\'"

    If DataTables("订单明细").Find(filter) Is Nothing Then
        DataTables("订单明细").AppendLoad(filter)
    End If

End If

但是如果把按钮1的代码放到窗口2的afterload里面,则会不正常,点击窗口1的订单表,追加数据有时候是2行(其中一个订单编号是一致的,另外一个编号毫不相关),有时候是一行,大多数是2行。不知道哪里出问题了?
[此贴子已经被作者于2022/7/2 20:51:34编辑过]

--  作者:有点蓝
--  发布时间:2022/7/3 20:26:00
--  
这个和事件的处理机制有关。下面情况都会触发currentchanged
1、重新加载数据,重新加载后不管之前选中的是哪一行,都会默认选中第一行
2、切换表后会触发目的表