Foxtable(狐表)用户栏目专家坐堂 → 删除子表行非常慢处是什么原因?


  共有5252人关注过本帖树形打印复制链接

主题:删除子表行非常慢处是什么原因?

帅哥哟,离线,有人找我吗?
有点甜
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/2/8 10:00:00 [显示全部帖子]

删除prepareEdit事件代码

 

If e.IsFocusCell AndAlso e.Col.name = "工料一类" Then
    Dim tb As New DropTreeBuilder
    tb.SourceTable = DataTables("工料单价") '指定目录树表
    tb.TreeFilter="项目id='" & e.Row("项目id") & "'"
    tb.TreeCols = "工料一类|工料二类|工料名称" '指定用于生成目录树的列
    tb.SourceCols = "工料一类|工料二类|工料名称|工料单位|工料ID|工料计划价" '指定数据来源列
    tb.ReceiveCols = "工料一类|工料二类|工料名称|工料单位|工料ID|工料计划价" '指定数据接收列
    e.Col.DropTree = tb.Build()
End If

 

代码写到click或者其它事件去,不要写在这个事件。


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/2/8 15:37:00 [显示全部帖子]

写到任意相关的事件那里去,就是不要写到prepareEdit事件。

 

比如 click、currentChanged、诸如此类的,自行寻找适合自己的事件,代码

 

    Dim tb As New DropTreeBuilder
    tb.SourceTable = DataTables("工料单价") '指定目录树表
    tb.TreeFilter="项目id='" & Tables("表名").Current("项目id") & "'"
    tb.TreeCols = "工料一类|工料二类|工料名称" '指定用于生成目录树的列
    tb.SourceCols = "工料一类|工料二类|工料名称|工料单位|工料ID|工料计划价" '指定数据来源列
    tb.ReceiveCols = "工料一类|工料二类|工料名称|工料单位|工料ID|工料计划价" '指定数据接收列
    Tables("表名").cols("列名").DropTree = tb.Build()


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/2/9 9:30:00 [显示全部帖子]

1、你本来没修改的代码就是不能正常引用目录树的吧?

 

2、你要引用工料单价的逻辑有问题。限制的条件是什么?两个表有什么关联?目录树应该显示成什么样才算正确?


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/2/9 14:33:00 [显示全部帖子]

prepareEdit事件,代码改成

 

static pid As Double = -1
If e.Col.name = "工料一类" Then
    If pid <> e.Row("项目id") Then
        Dim tb As New DropTreeBuilder
        tb.SourceTable = DataTables("工料单价") '指定目录树表
        tb.TreeFilter="项目id='" & e.Row("项目id") & "'"
        tb.TreeCols = "工料一类|工料二类|工料名称" '指定用于生成目录树的列
        tb.SourceCols = "工料一类|工料二类|工料名称|工料单位|工料ID|工料计划价" '指定数据来源列
        tb.ReceiveCols = "工料一类|工料二类|工料名称|工料单位|工料ID|工料计划价" '指定数据接收列
        e.Col.DropTree = tb.Build()
        pid = e.Row("项目id")
    End If
End If


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/2/12 12:04:00 [显示全部帖子]

1、改换成你原本的代码,能否正常调用?

 

2、是不是你逻辑有问题?你工料明细表,有项目id的值,并且正确吗?


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/2/12 14:50:00 [显示全部帖子]

static pid As Double = -1

If e.Col.name = "工料一类" Then

    If pid <> e.Row("项目id") Then

        Dim tb As New DropTreeBuilder

        tb.SourceTable = DataTables("工料单价") '指定目录树表

        tb.TreeFilter="项目id='" & e.Row("项目id") & "'"

        tb.TreeCols = "工料一类|工料二类|工料名称" '指定用于生成目录树的列

        tb.SourceCols = "工料一类|工料二类|工料名称|工料单位|工料ID" '指定数据来源列

        tb.ReceiveCols = "工料一类|工料二类|工料名称|工料单位|工料ID" '指定数据接收列

        e.Col.DropTree = tb.Build()

        pid = e.Row("项目id")

    End If

End If

 

 

'库明细表规格列目录树主表绑定工料ID

static pid1 As Double = -1


If e.Col.name = "规格" Then

     If pid1 <> e.Row("项目id") Then

        Dim tb As New DropTreeBuilder

        tb.SourceTable = DataTables("规格明细") '指定目录树表

        tb.TreeFilter="项目id='" & e.Row("项目id") & "' and 编号= '" & e.Row("工料ID") & "'"

        tb.TreeCols = "规格" '指定用于生成目录树的列

        tb.SourceCols = "规格" '指定数据来源列

        tb.ReceiveCols = "规格" '指定数据接收列

        e.Col.DropTree = tb.Build()

        pid1 = e.Row("项目id")

    End If

End If

 


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/2/12 17:07:00 [显示全部帖子]

上传实例测试。如果改成你原来的代码,是否正常?

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/2/12 18:45:00 [显示全部帖子]

1、这段代码如何测试都没问题

 

''清单明细表工料一类列目录树主表绑定项目ID
static pid As Double = -1
If e.Col.name = "工料一类" Then
    If pid <> e.Row("项目id") Then
        Dim tb As New DropTreeBuilder
        tb.SourceTable = DataTables("工料单价") '指定目录树表
        tb.TreeFilter="项目id='" & e.Row("项目id") & "'"
        tb.TreeCols = "工料一类|工料二类|工料名称" '指定用于生成目录树的列
        tb.SourceCols = "工料一类|工料二类|工料名称|工料单位|工料ID|工料计划价" '指定数据来源列
        tb.ReceiveCols = "工料一类|工料二类|工料名称|工料单位|工料ID|工料计划价" '指定数据接收列
        e.Col.DropTree = tb.Build()
        pid = e.Row("项目id")
    End If
End If

 

2、空白问题

 

''库明细表规格列目录树主表绑定工料ID
static pid1 As Double = -1
If e.Col.name = "规格" Then
     If pid1 <> e.Row("工料id") Then
        Dim tb As New DropTreeBuilder
        tb.SourceTable = DataTables("规格明细") '指定目录树表
        tb.TreeFilter="项目id='" & e.Row("项目id") & "' and 编号= '" & e.Row("工料ID") & "'"
        tb.TreeCols = "规格" '指定用于生成目录树的列
        tb.SourceCols = "规格" '指定数据来源列
        tb.ReceiveCols = "规格" '指定数据接收列
        e.Col.DropTree = tb.Build()
        pid1 = e.Row("工料id")
    End If


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/2/13 9:49:00 [显示全部帖子]

测试,没问题,请录制测试gif具体说明。

 

下载信息  [文件大小:135.5 KB  下载次数:17]
图片点击可在新窗口打开查看点击浏览该文件:sssd.zip


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/2/13 10:38:00 [显示全部帖子]

你项目事件CurrentTableChanged 有影响的代码,把currentTableChanged的代码删除,或者加上条件。

 回到顶部
总数 16 1 2 下一页