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

解决方案 »

  1.   

    因为节点可以拖来拖去,所以并不能保证依靠节点载入的顺序(尽管可以排序)都是从父到子.方案一
    1.先载入根节点
    2.当某节点展开的时候载入其子节点(可以包括子节点的子节点)
    我就是这么实现的方案二
    1.载入所有节点到一个DataTable中
    2.插入根节点
    3.对于当前每一个节点,到DataTable中使用xpath查询其子节点执行插入
    这么做可以用递归实现
      

  2.   

    回bitpolar(独自看天)
        我的流程很简单,就三块:
    1st:把每个文件夹放到根;
    2nd:把每个文件夹移动到正确的父文件夹(如果父文件夹是根则不执行);
    3nd:将另一个数据表中的文件内容放到正确的文件夹。
        这种方法做的流程是比较长,但是应该比递归要好读呀,而且应该很快,因为没有太多的条件判断式。现在的问题是有几个文件夹 A\B\C,如果我先把C放进B,再把B放到A,没问题,如果我把B放到A,然后再把C放到B,就会报错,其中ABC均为 TreeNode 对象,报错时检查,发现 B 的Text 和 Name 都没有内容,NULL,我是赋了值的呀,为什么?