Rss & SiteMap
Foxtable(狐表) http://www.foxtable.com
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事件中,没有任何改动,这时运行的结果就非常的慢。什么原因呢?
原因很清楚啊,上面的代码是从后台加载数据生成表,再根据这个表生成目录树,这是一个相当耗时的工作,怎么能设置在NodeMouseDoubleClick事件中呢?
而且有必要每次双击鼠标,就重新生成整个目录树吗?
在打开这个窗口时,建立这个目录树的速度非常快!NodeMouseDoubleClick这个事件中的代码没写全!在目录树上进行模糊搜索之后,按搜索结果重建目录树;若想恢复完整目录树内容,在其上有一项是“加载全部记录”,点到这一项就要做上述的那段程序了!我的问题是 在打开窗口时这个目录树建立的非常快,几乎打开同时就建成了;同一段程序在NodeMouseDoubleClick这个事件中,我要重新刷新目树树,但是速度相当的慢。这是为什么呢?
下载信息 [文件大小: 下载次数: ] | |
![]() |
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)