关于MFC的CTreeCtrl 递归插入节点,该怎么解决
关于MFC的CTreeCtrl 递归插入节点
先描述下数据结构
父ID,子ID,用户名
0 0 user
1 0 test
2 0 anmy
3 1 test1
4 2 anmy1
然后根据父ID与子ID关系,最后排列出来的树形结构
树根USER
+---test
+----test1
+---anmy
+-----anmy1
基本就是这个意思
我现在通过tree控件已经实现了动态生成树的效果,但是由于数据库的内容比较多,而且用户层级也不等,我现在自己写的方法,在1000个用户关系中,处理接近5分钟,简直离谱了
征求下高手大虾们,有什么好的案例,或成型的函数,通过传递参数的方式,实现一次性且时间短的好办法呢?
------解决方案--------------------
我估计你的流程可能是这样做的:
递归第一层:查找数据库,找出级别为最高级的结点的数据,插入到树中。
递归第二层:查找数据库,找出级别为第二级的结点的数据,插入到树中。
递归第三层:查找数据库,找出级别为第三级的结点的数据,插入到树中。
以次类推。。。。直到找完。
那么如果真是这种情况,耗时的问题就很明显了,就在于每次递归的都重新查找数据库导致的。你看看是不是这种情况。
------解决方案--------------------
都说了 如果你子很多的话 就不要一次都生成 用户一次又不会看那么多 你这没图标 如果每项都有图标 更是慢死你
------解决方案--------------------
我说句题外话,你返回xml会更好些。
还有你在生成树的时候,如果数据很大,客户端不可能一次把树全部展开,那样会很慢
先描述下数据结构
父ID,子ID,用户名
0 0 user
1 0 test
2 0 anmy
3 1 test1
4 2 anmy1
然后根据父ID与子ID关系,最后排列出来的树形结构
树根USER
+---test
+----test1
+---anmy
+-----anmy1
基本就是这个意思
我现在通过tree控件已经实现了动态生成树的效果,但是由于数据库的内容比较多,而且用户层级也不等,我现在自己写的方法,在1000个用户关系中,处理接近5分钟,简直离谱了
征求下高手大虾们,有什么好的案例,或成型的函数,通过传递参数的方式,实现一次性且时间短的好办法呢?
------解决方案--------------------
我估计你的流程可能是这样做的:
递归第一层:查找数据库,找出级别为最高级的结点的数据,插入到树中。
递归第二层:查找数据库,找出级别为第二级的结点的数据,插入到树中。
递归第三层:查找数据库,找出级别为第三级的结点的数据,插入到树中。
以次类推。。。。直到找完。
那么如果真是这种情况,耗时的问题就很明显了,就在于每次递归的都重新查找数据库导致的。你看看是不是这种情况。
------解决方案--------------------
都说了 如果你子很多的话 就不要一次都生成 用户一次又不会看那么多 你这没图标 如果每项都有图标 更是慢死你
------解决方案--------------------
我说句题外话,你返回xml会更好些。
还有你在生成树的时候,如果数据很大,客户端不可能一次把树全部展开,那样会很慢