标题:求助一个treeview第三级节点添加的问题
只看楼主
yang113
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2018-5-21
结帖率:100%
已结贴  问题点数:20 回复次数:1 
求助一个treeview第三级节点添加的问题
想做一个3级树结构,在添加第三级节点时候报错
第一级是序号,第二级是姓名,第三级是联系人
这个代码运行的时候报错 element not found..

This.LineStyle= 1  && tvwRootLines
This.Style= 7  && tvwTreelinesPlusMinusPictureText
This.ImageList=Thisform.Imagelist1   &&与Imagelist控件建立关联
sele xuhao
replace ALL 项目编号 with"B"+ALLTRIM(STR(RECNO()))
replace ALL key with"C"+ALLTRIM(STR(RECNO()))
replace ALL key2 with"D"+ALLTRIM(STR(RECNO()))
replace ALL key3 with"E"+ALLTRIM(STR(RECNO()))
sele xuhao1
replace ALL 项目编号 with"B"+ALLTRIM(STR(RECNO()))
replace ALL key with"C"+ALLTRIM(STR(RECNO()))
replace ALL key2 with"D"+ALLTRIM(STR(RECNO()))
replace ALL key3 with"E"+ALLTRIM(STR(RECNO()))




SELECT xuhao
SET DELETED ON
GO TOP
DO WHILE !EOF()
   &&添加部门节点,以唯一的部门编号字段作为控件的Key
   This.Nodes.Add(,,ALLTRIM(xuhao.项目编号),;
               ALLTRIM(xuhao.序号),1,2)
               
  *( 属于,子节点,名称,标题)节点的名称就用编号,子节点的属于就用节点的名称,就是部门编号。

   SELECT xuhao1
   SET DELETED ON
   SET FILTER TO ALLTRIM(xuhao1.项目编号)=;
                ALLTRIM(xuhao.项目编号)
   GO TOP

   &&添加部门中人员节点,以唯一的Key字段值作为控件的Key
   DO WHILE !EOF()
      This.Nodes.Add(ALLTRIM(xuhao.项目编号),4,;
                 ALLTRIM(xuhao1.Key),ALLTRIM(xuhao1.姓名),3,3)
      SKIP




      
  *****treeview 第三级begin  修改这部分  
         SELECT xuhao2
   SET DELETED ON
   SET FILTER TO ALLTRIM(xuhao2.key2)=;
                ALLTRIM(xuhao1.key2)
   GO TOP

   &&添加部门中人员节点,以唯一的Key字段值作为控件的Key
   DO WHILE !EOF()
      This.Nodes.Add(ALLTRIM(xuhao1.key2),4,;
                 ALLTRIM(xuhao2.Key3),ALLTRIM(xuhao2.联系人),3,3)
      SKIP
   ENDDO
  *****treeview 第三级end   
      
      
      
   ENDDO

   SELECT xuhao
   SKIP
ENDDO
SELECT xuhao1
SET FILTER TO
GO TOP
SELECT xuhao2
GO TOP


拜谢!
搜索更多相关主题的帖子: 节点 replace 编号 STR key 
2018-05-29 16:06
厨师王德榜
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:183
帖 子:942
专家分:4724
注 册:2013-2-16
得分:20 
至少两处明显的错误。1、
 &&添加部门中人员节点,以唯一的Key字段值作为控件的Key
   DO WHILE !EOF()
      This.Nodes.Add(ALLTRIM(xuhao.项目编号),4,;
                 ALLTRIM(xuhao1.Key),ALLTRIM(xuhao1.姓名),3,3)
二级节点的key是添加的"Key",等会儿,三级节点却用“Key2”与之关联:
   SET FILTER TO ALLTRIM(xuhao2.key2)=;
                ALLTRIM(xuhao1.key2)
这样能关联上才怪。2、既然是三层循环结构,为什么第二层 却在第三层未滚动之前,先做了一个SKIP动作?这是最大的错误。
程序代码:
   &&添加部门中人员节点,以唯一的Key字段值作为控件的Key
   DO WHILE !EOF()
      This.Nodes.Add(ALLTRIM(xuhao.项目编号),4,;
                 ALLTRIM(xuhao1.Key),ALLTRIM(xuhao1.姓名),3,3)
      SKIP
注意看上面的skip,第三层尚未滚动,第二层先滚动了,是不是早了点?
修改方案:1、把这个SKIP,挪到后面去。2、二、三层之间的关联要修改。我想,如果在写代码的时候,层次缩进能严格一些,或许能帮助你早点找到这些错误。
参考方案如下 (上下文请自己补上):
程序代码:
SELECT xuhao
SET DELETED ON
GO TOP
DO WHILE !EOF()
   &&添加部门节点,以唯一的部门编号字段作为控件的Key
   kk1=ALLTRIM(xuhao.项目编号)
   tt1=ALLTRIM(xuhao.序号)
   This.Parent.treeView1.Nodes.Add(,,ALLTRIM(xuhao.项目编号),;
               ALLTRIM(xuhao.序号),1,2)
              

  *( 属于,子节点,名称,标题)节点的名称就用编号,子节点的属于就用节点的名称,就是部门编号。

   SELECT xuhao1
   SET DELETED ON
   SET FILTER TO ALLTRIM(xuhao1.项目编号)=;
                ALLTRIM(xuhao.项目编号)
   GO TOP

   &&添加部门中人员节点,以唯一的Key字段值作为控件的Key
   DO WHILE !EOF()
      This.Parent.treeView1.Nodes.Add(ALLTRIM(xuhao.项目编号),4,;
                 ALLTRIM(xuhao1.Key2),ALLTRIM(xuhao1.姓名),3,3)
   

      *****treeview 第三级begin  修改这部分 

         SELECT xuhao2
           SET DELETED ON
           SET FILTER TO ALLTRIM(xuhao2.key2)=;
                        ALLTRIM(xuhao1.key2)
           GO TOP

           &&添加部门中人员节点,以唯一的Key字段值作为控件的Key
           DO WHILE !EOF()
              This.Parent.treeView1.Nodes.Add(ALLTRIM(xuhao1.key2),4,;
                         ALLTRIM(xuhao2.Key3),ALLTRIM(xuhao2.联系人),3,3)
              SKIP
           ENDDO
          *****treeview 第三级end  

      SELECT xuhao1
        SKIP
   ENDDO

   SELECT xuhao
   SKIP
ENDDO



2018-05-29 22:58



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-487388-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.101837 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved