如何快速地实现 TreeView 的结点枚举?

LngDotin 2006-12-07 11:07:28
TreeView 的结点放在了数据库中,且所有结点的层次不同,只有通过判断父结点的子结点 ID 才能确定它的子结点个数,用了递归法,可是枚举时好慢(近3000个不同层次的结点)。老大们,谁有好的办法,给俺指条明路,谢谢了。
本帖属纯技术帖,谢绝路过顶贴、灌水等非讨论内容。
...全文
277 4 打赏 收藏 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xwb1966 2006-12-08
  • 打赏
  • 举报
回复
一楼的正解, 就是说, 你程序一开始展现的Tree应该只包含第一层的结点, 但将该结点的HasChildren属性置true, 这样会在该结点前显示"+", 但并不真正从数据库中读. 当该结点被第一次展开时, 再到数据库中读取该结点下一层的内容, 按同样的方法仅读一层即可, 依次类推.

TreeView操作是相当慢的, 只有通过这种办法, 将一次性数据库读取分担到每次展开时读取, 才能解决这个问题, 而且给人的感觉丝毫没有受到影响.

当然, 这种方法也有弱点, 比如调入以后要直接在Tree中遍历查找的功能就要受到限制了.
controstr 2006-12-07
  • 打赏
  • 举报
回复
用几个字段分别存放TreeView各节点的值,本身的序号,父节点的序号,及排序序号
在显示时,如果该节点值没有父节点,则该节点值本身就是父节点,如果存在父节点,则先查找到它的父节点,再AddChild就可以了
一个循环分别读取数据库中的数据就可以遍历所有数据

不知道我说的LZ是否明白
LngDotin 2006-12-07
  • 打赏
  • 举报
回复
回答我想干什么:
一个空 TreeView ,我想把藏在数据库中的各结点按层次枚举出来。数据库有一个字段放有父、子结点的逻辑关系。
wood542344 2006-12-07
  • 打赏
  • 举报
回复
这个问题好像以前的帖子讨论过的。递归的效率是慢了点,不过可以不要一次性全把树整棵都画起来啊。可以先把根结点和根结点下一层结点先画好。下一层子结点先不要画。如果有子结点则先加一个空结点,没有则不加。
最后点击有子结点的结点时,再去数据库里找子结点。。。
这样不会很卡,但访问数据库的次数明显增多。楼主自己看着办喽。
内容概要:本文介绍了基于模型预测控制(MPC)与凸优化算法相结合的电动车优化调度方法,并通过Matlab代码实现具体应用。研究构建了一个综合考虑电网负荷、用户经济收益及电池损耗等多维度约束与多目标优化的调度模型,充分发挥MPC的滚动优化能力和凸优化在求解效率与稳定性方面的优势,以提升调度方案的实时性与可靠性。文中系统阐述了MPC与凸优化的理论基础、融合算法的设计流程,并通过仿真验证了该方法在平抑电网负荷波动、降低用户用电成本以及延长电池使用寿命等方面的显著成效。; 适合人群:具备一定电力系统、优化算法和Matlab编程基础的研究生、科研人员及工程技术人员。; 使用场景及目标:①为电力系统中的电动汽车集群调度提供一种先进的优化解决方案;②研究MPC与凸优化结合在处理多目标、多约束动态优化问题上的具体实现与性能表现;③为相关领域的算法开发与仿真研究提供Matlab代码参考。; 阅读建议:此资源以Matlab代码实现为核心,强调算法的实际应用与仿真验证。读者在学习时应重点关注调度模型的数学建模过程、MPC框架的搭建以及凸优化问题的求解方法,并结合提供的代码进行调试与复现,以深入理解算法细节和优化效果。

13,871

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧