我在一个做的软件中,有一个对象列表要用TreeView显示,要用到7个关联表,可是用一般加载方法速度很慢,有没有好的方法可以快一点。大家帮忙指点一下。
表1。 MID, MName, 其它字段。
表2。 MID, BID, BName, 其它字段。
表3。 BID, CID, BName, DID, DName,其它字段。
表4。 PID, PName, BCount, 其它字段 .
表5。 PID, BID,其它字段。
用TreeView 加载出来应该是下面这样的。其中MID,BID, CID, DID 是一个物理对象,而PID是一个逻辑上的对象,用于逻辑上的管理MID,BID,CID,DI等对象。MID包含BID,BID又包含CID,CID又包DID,其中为节省空间就把CID和DID写在一个表里了。软件名字
  |
  |------MNames(就是MID的集合)
  |   |
  |   |--MID_1
  |   |  |_____BNames(就是BID的集合)
  |   |    |
  |   |      |__BID_1   
  |   |       |   |
  |   |       |   |___CNames(就是CID的集合)  
  |   |       |     |
  |   |       |     |___CID_1
  |   |       |     | | 
  |   |       |     | |____DNames(就是DID的集合)
 |   |       |     |    |
  |   |       |     |    |__DID_1  
  |   |       |      |     |__其它的DID ,同上
  |   |       |      |___其它的CID,同上
  |   |    |____其它的BID,同上  
  |   |__其它的MID,同上    
  |
  |
  |_____PNames(就是PID的集合)
     |
     |____PID_1
     |  |
   |   |___某个MID(层次和上面的一样,但可以只包括层次的一部分)   
     |    |
     |    |___其它包括的MID,同上
     | 
     |__其它的PID   麻烦大家想一想。分不够可以再加。

解决方案 »

  1.   

    你的数据量有多少?
    可以加个进度条嘛实在不行就写程序动态加载点到某个节点再load数据,不过数据最好先读到DataSet里,不然说不定更慢
      

  2.   

    To rustle() 
    关键我这个本来就是动太加载的。
    数据量虽然不是很大,但也要处理得比较好才能使整个程序的性能良好呀。
      

  3.   

    在构建TreeView的时候最好用:
    beginupdate
    ....
    ....
    ....
    endupdate
      

  4.   

    给你一个建议:
       在生成每个节点的时候,只要不是最后的子节点,都在节点先加一个节点,在单击该节点时删除加的子节点,再生成多个子节点。速度快多了。如:
    1:生成一级节点时,加一个子节点“请稍后”。
    |
    |------MNames(就是MID的集合)
    |
      |   |--请稍后
      |_____PNames(就是PID的集合)  |   |--请稍后
    2:单击节点“MNames(就是MID的集合)”时,删除子节点“请稍后”,查询子数据集,有数据,则加子节点;|------MNames(就是MID的集合)
    |
      |   |--MID_1
      |   |  |_____请稍后
      |_____PNames(就是PID的集合)  |   |--请稍后
    3:单击每个节点都如此,速度就快多了。
      

  5.   

    你可把数据先读到本地(Dat、INI或其它文件),再进行TreeView数据加载,从本地取数据应该快点。
      

  6.   

    CSDN的大侠跑哪儿去了,帮忙看一下了。