Foxtable(狐表)用户栏目专家坐堂 → Treeview 运行速度慢


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

主题:Treeview 运行速度慢

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


加好友 发短信
等级:小狐 帖子:358 积分:4035 威望:0 精华:0 注册:2014/7/29 23:42:00
Treeview 运行速度慢  发帖心情 Post By:2015/1/23 14:44:00 [只看该作者]

我想通过两个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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/1/23 14:45:00 [只看该作者]

Find的速度如果数据量大了效率不高,  我没搞懂你的具体意图,你上个例子看看. 说明需求,也许有更好的方式

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/1/23 15:06:00 [只看该作者]

 这一句没有必要。

 

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

 

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


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


加好友 发短信
等级:小狐 帖子:358 积分:4035 威望:0 精华:0 注册:2014/7/29 23:42:00
回复:(有点甜) 这一句没有必要。 Da...  发帖心情 Post By:2015/1/23 15:09:00 [只看该作者]

那句是起到查询作用的吧。

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

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

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


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/1/23 15:13:00 [只看该作者]

'DataTables("表A").Find("[第二列] = '" & cmb2.Text & "' And [第一列] = '" & cmb1.Text & "'")  

这句代码去掉.

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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


 回到顶部