以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于Datacolchanged事件的执行效率问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=174997)

--  作者:873773115
--  发布时间:2022/2/15 11:51:00
--  关于Datacolchanged事件的执行效率问题
If e.DataTable.AllowEdit = True Then
    Dim apc As Table = Tables("生产工单_pc")
    Dim trv As WinForm.TreeView = e.Form.Controls("glist")
    trv.StopRedraw
    apc.StopRedraw
    Select Case e.DataCol.Name
        Case "选中"
            If e.NewValue = True Then
                e.DataRow("排产张数") = e.DataRow("未排产")
            Else
                e.DataRow("排产张数") = 0
            End If
        Case "排产张数"
            If e.DataRow.IsNull("单号") Then
                e.DataRow("未排产") = e.DataRow("订单明细_排单") - e.DataRow("已排产") - e.DataRow("排产张数")
            Else
                e.DataRow("未排产") = e.DataRow("订单明细_订单") - e.DataRow("已排产") - e.DataRow("排产张数")
            End If
            If e.DataRow("未排产") < 0 Then
                e.DataRow("未排产") = 0
            End If
            e.DataRow("排单库存平方") = e.DataRow("排产张数") * e.DataRow("单张库存平方")
            
            trv.BuildTree(e.DataTable, "品名|规格","选中 = 1")
            For Each nd As WinForm.TreeNode In trv.AllNodes
                Dim zl As String = nd.DataRow("种类")
                Dim gg As String = nd.DataRow("规格")
                Select Case nd.Level
                    Case 0
                        nd.Text = nd.text & "  (" & e.DataTable.Compute("Sum(排产张数)","种类 = \'" & zl & "\'and 选中 = 1") & "张)" & "  /" & format(e.DataTable.Compute("Sum(排单库存平方)","种类 = \'" & zl & "\'and 选中 = 1"),"0") & " 平方"
                    Case 1
                        nd.Text = nd.text & "  (" & e.DataTable.Compute("Sum(排产张数)","规格 = \'" & gg & "\'and 选中 = 1") & "张)"
                End Select
            Next
            apc.Sort = "选中 DESC"
    End Select
    apc.ResumeRedraw
    trv.ExpandAll
    trv.ResumeRedraw
End If


老师,关于这段代码     执行效率很低,因为一次选中的行最少都有几十行,下面 TreeView 控件仅需要选中结束后刷新一次即可,但是每次都会跟着计算刷新,效率非常低,是否有什么办法解决呢?

--  作者:有点蓝
--  发布时间:2022/2/15 11:59:00
--  
目录树的更新建议放到按钮:使用代码重置列,然后在刷新目录树