【发布时间】:2011-09-11 11:48:45
【问题描述】:
我有一个 Nhibernate 数据库,它以分层列表的形式提供数据。我的 Windows 窗体 GUI 中有一个 TreeView 和一个 Backgroundworker,它使用所有根节点及其子节点填充 TreeView(仅此而已,因为 NHibernate 的延迟加载异常,但这没关系,因为我希望用户在 TreeView 中有很多节点)。
将根节点及其子节点添加到 TreeView 的过程运行良好,但是当我单击节点展开它时,所有子节点的子节点都应该从数据库加载并添加到 TreeView。从数据库成功请求节点并存储在缓冲区列表中(单击节点展开它时)。
之后,我尝试了一些想法,例如重建 TreeView 并完全重新填充它,但使用此解决方案时,我遇到了所有展开的节点都折叠的问题,因此我尝试存储展开的节点并且它有效。但是我对这个解决方案不太满意,我觉得它可以做得更容易,因为我不想每次用户扩展节点时都重新填充 TreeView。
如何在不重新填充整个 TreeView 的情况下从数据库中重新加载 TreeNode 的子节点并将其显示在 TreeView 中?
【问题讨论】:
-
延迟加载不是问题,因为我在从数据库初始加载时获得了根节点的子节点。
标签: c# winforms nhibernate treeview backgroundworker