以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  行刷新数据速度很慢?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=127238)

--  作者:ZJZK2018
--  发布时间:2018/11/9 3:29:00
--  行刷新数据速度很慢?
为什么执行下面代码,速度很慢,有没有其他办法?


        For Each c As Object In e.Form.Controls
            If Typeof c Is WinForm.Table Then
                For Each dr As DataRow In c.Table.DataTable.DataRows
                    dr.Load()
                Next
            End If
        Next

--  作者:有点甜
--  发布时间:2018/11/9 9:00:00
--  
For Each c As Object In e.Form.Controls
    If Typeof c Is WinForm.Table Then
        c.Table.DataTable.load
    End If
Next

--  作者:ZJZK2018
--  发布时间:2018/11/9 16:09:00
--  
为什么我加了红色代码,一执行变没有数据
需求是:如果Tables("项目信息")中“选中”项为true,则加载与“项目编号”相同的数据,如查没有“选中”的行,则不加载数据

e.Form.StopRedraw() \'停止绘制窗口
For Each c As Object In e.Form.Controls
    If Typeof c Is WinForm.Table Then
        c.Table.DataTable.StopRedraw() \'停止绘制表
        For Each dr As Row In Tables("项目信息").Rows
            If dr("选中") = True Then
                c.Table.DataTable.LoadFilter = "项目编号 = \'" & dr("项目编号") & "\'"
                c.Table.DataTable.Load()
            Else
                c.Table.DataTable.LoadFilter = "[_Identify] Is Null"
                c.Table.DataTable.Load()
            End If
            If c.Table.Rows.Count > 0 Then
                c.Table.Select(0,0) \'光标在第一行第一列位置
            End If
        Next
        c.Table.DataTable.ResumeRedraw() \'恢复绘制表
    End If
Next
e.Form.ResumeRedraw()  \'恢复绘制窗口

--  作者:有点甜
--  发布时间:2018/11/9 16:50:00
--  

参考这里写加载代码

 

http://www.foxtable.com/webhelp/scr/2228.htm

 


--  作者:ZJZK2018
--  发布时间:2018/11/9 22:53:00
--  
老师为什么下面代码测试没问题,但筛选不出数据来,写在AfterLoad事件中

Dim tb1 As Table = Tables(e.Form.Name & "_Table1")
Dim lst As New List(Of String)
lst = Tables("项目信息").DataTable.GetValues("项目编号","选中 = 1")
If lst.Count = 0 Then
    tb1.DataTable.LoadFilter = "项目编号 is Null"
Else
    Dim ids As String
    For Each dr As DataRow In tb1.DataTable.DataRows
        ids = ids & ",\'" & dr("项目编号") & "\'"
    Next
    ids = ids.Trim(",")
    tb1.DataTable.LoadFilter = "项目编号 in (" & ids & ")"
End If
tb1.DataTable.Load()
[此贴子已经被作者于2018/11/9 23:01:04编辑过]

--  作者:有点蓝
--  发布时间:2018/11/9 23:02:00
--  
Dim tb1 As Table = Tables(e.Form.Name & "_Table1")
Dim lst As New List(Of String)
lst = Tables("项目信息").DataTable.GetValues("项目编号","选中 = 1")
If lst.Count = 0 Then
    tb1.DataTable.LoadFilter = "项目编号 is Null"
Else
    tb1.DataTable.LoadFilter = "项目编号 in (\'" & String.Join("\',\'",lst.ToArray)  & "\')"
End If
msgbox(tb1.DataTable.LoadFilter)
tb1.DataTable.Load()