以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  Treeview 运行速度慢  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=63556)

--  作者:machle
--  发布时间:2015/1/23 14:44:00
--  Treeview 运行速度慢
我想通过两个combobox展开treeview中的某节点,并选中最下面的节点,然后显示筛选出的数据。combobox是treeview的两级。

下面代码可以实现,但是运行速度有些慢,treeview先变成白的,然后过1-2秒钟,才出来结果。能帮我看一下吗?谢谢!

 Dim cmb1 As WinForm.ComboBox = e.Form.Controls("ComboBox1")
Dim cmb2 As WinForm.ComboBox = e.Form.Controls("ComboBox2")

If cmb1.text <>"" And cmb2.text <>"" Then

DataTables("BasicLabel").Find("[危险项别] = \'" & cmb2.Text & "\' And [类别] = \'" & cmb1.Text & "\'")

Dim tr As WinForm.TreeView
tr = Forms("类别和危险类别中文说明").Controls("TreeView1")

tr.CollapseAll
tr.Nodes(cmb1.text).Expand()

tr.SelectedNode = tr.Nodes(cmb1.text).Nodes(cmb2.text)

Else

Messagebox.show("请选择合适的类别和危险项别!", "提示")

End If
--  作者:Bin
--  发布时间:2015/1/23 14:45:00
--  
Find的速度如果数据量大了效率不高,  我没搞懂你的具体意图,你上个例子看看. 说明需求,也许有更好的方式
--  作者:有点甜
--  发布时间:2015/1/23 15:06:00
--  

 这一句没有必要。

 

DataTables("BasicLabel").Find("[危险项别] = \'" & cmb2.Text & "\' And [类别] = \'" & cmb1.Text & "\'")

 

 还有就是可能你其它代码有影响,具体请上传例子


--  作者:machle
--  发布时间:2015/1/23 15:09:00
--  回复:(有点甜) 这一句没有必要。 Da...
那句是起到查询作用的吧。

做了个例子,数据少了,没有那种慢的感觉,能不能帮我看看还有其他方式能快些吗?这个例子没有什么延迟,我那个数据实际也不多,但是显示的时候treeview先要刷新变白1-2秒钟,才显示最后的数据。

另外火狐浏览器居然没法上传附件……

唉,问题都被我遇上了。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.zip


--  作者:Bin
--  发布时间:2015/1/23 15:13:00
--  
\'DataTables("表A").Find("[第二列] = \'" & cmb2.Text & "\' And [第一列] = \'" & cmb1.Text & "\'")  

这句代码去掉.

--  作者:有点甜
--  发布时间:2015/1/23 15:19:00
--  

Dim cmb1 As WinForm.ComboBox = e.Form.Controls("ComboBox1")
Dim cmb2 As WinForm.ComboBox = e.Form.Controls("ComboBox2")

If cmb1.text <>"" And cmb2.text <>"" Then
   
   
    Dim tr As WinForm.TreeView
    tr = Forms("窗口1").Controls("TreeView1")
    tr.StopRedraw
    tr.CollapseAll
    tr.Nodes(cmb1.text).Expand()
   
    tr.SelectedNode = tr.Nodes(cmb1.text).Nodes(cmb2.text)
    tr.ResumeRedraw
   
   
Else
   
    Messagebox.show("请选择合适的类别和危险项别!", "提示")
   
End If