可以这样处理,每次只读一层:
第一次,读出第一级的节点,同时在树中在每个节点下面添加一个虚节点。
这样在显示第一级节点就会有展开标志(那个加号)
当点击展开标志的时候会触发节点的BeforeExpand事件
重载节点的BeforeExpand事件,首先判断是否已经展开过,如果没有则删除开始添加的虚节点,同时在这里写读出其下一层节点的代码,同样也只读一层,并添加虚节点。设置已展开标志。
依次类推。展开下层节点的代码可复用。
这样不管数据有多少,对速度基本上没有很大影响。