日期:2014-05-19  浏览次数:21180 次

TreeView 移动节点的问题
环境:XPSP2   +   C#.net   2005   +   ACCESS
问题:
        在将ACCESS中的数据中有两种内容,其一是枝(可包含子节点)和叶(不可包含子节点),载入   TreeView   时,为了避免进行递归操作,用了如下过程:
        因为树状目录是动态的,如果一开始就移动到正确的位置,可能这个时候它的父节点还没有建立,将报错。因此先将所有的枝数据载入到根,然后将其移动到正确的位置。在移动到正确位置的过程中,如果先将某个枝节点的内容装完,然后再将其移动到它的父节点,则返回正确的状态。但是如果将某个已经移动到正确位置的节点定义到   TreeNode   对像,则只能返回   null,   并且无法将其子节点移入。但是与此同时,点击该节点,却能够返回正确的Name   或   Text   值,这是为什么?
        这个流程在VB6里已经实现过,但是在为了学习   C#   而重写该代码时去遭遇上述错误,请问是为什么呀?给个思路也行。
        因为这个流程没有通过,所以后续的加入内容的流程就没有继续做。

------解决方案--------------------
因为节点可以拖来拖去,所以并不能保证依靠节点载入的顺序(尽管可以排序)都是从父到子.

方案一
1.先载入根节点
2.当某节点展开的时候载入其子节点(可以包括子节点的子节点)
我就是这么实现的

方案二
1.载入所有节点到一个DataTable中
2.插入根节点
3.对于当前每一个节点,到DataTable中使用xpath查询其子节点执行插入
这么做可以用递归实现
------解决方案--------------------
你的流程,即便在VB6中没有问题了,必定也过于复杂,可读性很难保证