我最近根据活动的x treeview控件提问this Question,该控件加载速度很慢。上一个问题的评论建议我添加一个"按需加载"。
树视图控件有4个级别的节点,通过测试我发现只有第4级是问题。
我无法弄清楚如何正确编码这个"按需加载"。我想要发生的是,前三个级别加载打开,然后当用户点击第三个级别时,第四个级别加载该适当的节点。
这是我应该采取的正确方法,以加快加载时间吗?
我认为我需要添加node_click()
事件才能加载第四级。如何仅为添加子节点的第三级添加节点单击事件?
这是我的第三级:
strSQL1 = "Select * From Prt_Section ORDER BY Section_Number"
Set myRSChild1 = MyDB.OpenRecordset(strSQL1, dbOpenSnapshot)
Do While Not myRSChild1.EOF
Set nodx = Treeview1.Nodes.Add("A" & CStr(myRSChild1![PartCatID]), tvwChild, "B" & CStr(myRSChild1![SectionID]), _
" " & Format$(myRSChild1![Section_Number], "00") & " - " & _
myRSChild1![Section_Description])
myRSChild1.MoveNext
Loop
答案 0 :(得分:0)
这是我应该采取的正确方法,以加快加载时间吗?
您将花费更少的时间来填充TreeView,并且可能使用返回更少行或更简单的查询,因此可能。
要做到这一点,你需要确定最初未填充的节点 - 最简单的方法是给它一个固定的.Key
或.Tag
- 然后当用一个匹配的值点击一个节点时,如果它没有已经填充,填充它:
Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
If Node.Key = "FOO" And Node.Children = 0 Then
'//get data
TreeView1.Nodes.Add Node.Key, tvwChild, , Rnd
TreeView1.Nodes.Add Node.Key, tvwChild, , Rnd
TreeView1.Nodes.Add Node.Key, tvwChild, , Rnd
End If
End Sub