Foxtable(狐表)用户栏目专家坐堂 → [求助]同一段程序在同一目录树下不同事件为什么运行速度完全不一样呢?


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

主题:[求助]同一段程序在同一目录树下不同事件为什么运行速度完全不一样呢?

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


加好友 发短信
等级:八尾狐 帖子:1964 积分:15610 威望:0 精华:0 注册:2011/7/16 20:59:00
[求助]同一段程序在同一目录树下不同事件为什么运行速度完全不一样呢?  发帖心情 Post By:2011/12/20 7:35:00 [只看该作者]

在一个窗口中有一目录树控件TreeView1。在AFTERLOAD事件中有一段程序如下:

Dim tv As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.ConnectionName = 数据源名
cmd.CommandText = "SELECT * From {库存} "
dt = cmd.ExecuteReader


tv.Nodes.Clear
tv.BuildTree(dt, "仓库类别|料品大类|料品编码")

Dim tt As DataRow
For Each g1 As WinForm.TreeNode In tv.Nodes
    For Each g2 As WinForm.TreeNode In g1.Nodes
        For Each g3 As WinForm.TreeNode In g2.Nodes
            tt=dt.find("料品编码='" & g3.name & "' AND 仓库类别='" & g1.text & "'")
            If tt IsNot Nothing Then
                g3.Text= tt("料品编码") & "|" & tt("料品中类")  & "|" & tt("料品名称") & "|" & tt("规格")
               
            End If
        Next
    Next
Next
nd = tv.Nodes.Insert("加载全部记录","加载全部记录",0)

窗口打开运行正常;

把这段程序放到该控件的NodeMouseDoubleClick事件中,没有任何改动,这时运行的结果就非常的慢。什么原因呢?


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/12/20 9:19:00 [只看该作者]

原因很清楚啊,上面的代码是从后台加载数据生成表,再根据这个表生成目录树,这是一个相当耗时的工作,怎么能设置在NodeMouseDoubleClick事件中呢?

而且有必要每次双击鼠标,就重新生成整个目录树吗?


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


加好友 发短信
等级:八尾狐 帖子:1964 积分:15610 威望:0 精华:0 注册:2011/7/16 20:59:00
  发帖心情 Post By:2011/12/20 9:43:00 [只看该作者]

在打开这个窗口时,建立这个目录树的速度非常快!NodeMouseDoubleClick这个事件中的代码没写全!在目录树上进行模糊搜索之后,按搜索结果重建目录树;若想恢复完整目录树内容,在其上有一项是“加载全部记录”,点到这一项就要做上述的那段程序了!我的问题是 在打开窗口时这个目录树建立的非常快,几乎打开同时就建成了;同一段程序在NodeMouseDoubleClick这个事件中,我要重新刷新目树树,但是速度相当的慢。这是为什么呢?


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/12/20 10:07:00 [只看该作者]

另外加个刷新按钮:

 

http://www.foxtable.com/help/topics/2350.htm

 


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


加好友 发短信
等级:八尾狐 帖子:1964 积分:15610 威望:0 精华:0 注册:2011/7/16 20:59:00
  发帖心情 Post By:2011/12/20 10:30:00 [只看该作者]

加上刷新按钮了!效果还是那个样子!打开窗口瞬间目录树就建成了!按了这个刷新按钮,窗口就不动了,要等上两三分钟;瞬间和两三分钟差距太大了。刷新按钮中的内容就是打开窗口时的程序,直接COPY过来的!
图片点击可在新窗口打开查看此主题相关图片如下:建立目录树时间差异.gif
图片点击可在新窗口打开查看  这是一个效果演示,时间差异太大了!

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/12/20 10:33:00 [只看该作者]

做个简单的例子传上来的,将窗口和代码设计好。

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


加好友 发短信
等级:八尾狐 帖子:1964 积分:15610 威望:0 精华:0 注册:2011/7/16 20:59:00
  发帖心情 Post By:2011/12/20 11:02:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.rar
  请狐爸帮助看看什么原因?

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/12/20 11:27:00 [只看该作者]

Dim tv As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim nd As WinForm.TreeNode
Dim nd1 As WinForm.TreeNode
Dim nd2 As WinForm.TreeNode
Dim nd3 As WinForm.TreeNode
Dim cmd As New SQLCommand,cmd1 As New SQLCommand
Dim dt As DataTable,dt1 As DataTable

cmd.C
cmd1.C
cmd.CommandText = "SELECT * From {库存} "
dt = cmd.ExecuteReader

Dim ia As Integer=0
tv.Nodes.Clear
tv.BuildTree(dt, "仓库类别|料品大类|料品编码")

Dim tt As DataRow
Ctype(tv.baseControl,Windows.Forms.Treeview).BeginUpdate
For Each g1 As WinForm.TreeNode In tv.Nodes
    For Each g2 As WinForm.TreeNode In g1.Nodes
        For Each g3 As WinForm.TreeNode In g2.Nodes
            tt=dt.find("料品编码='" & g3.name & "' AND 仓库类别='" & g1.text & "'")
            If tt IsNot Nothing Then
                g3.Text= tt("料品编码") & "/" & tt("料品中类")  & "/" & tt("料品名称") & "/" & tt("规格")
            End If
        Next
    Next
Next
Ctype(tv.baseControl,Windows.Forms.Treeview).EndUpdate

nd = tv.Nodes.Insert("加载全部记录","加载全部记录",0)


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


加好友 发短信
等级:八尾狐 帖子:1964 积分:15610 威望:0 精华:0 注册:2011/7/16 20:59:00
  发帖心情 Post By:2011/12/20 14:52:00 [只看该作者]

谢谢狐爸!速度正常了!在这些语句中用了一些新语句怎么在教材中没有找到呢?

 回到顶部