我做的这个是工厂的绩效考核评分系统,有一张表包含了类似数据仓库的维度表结果的数据,分为4层,现在需要用一个treeview来展现,treeview的init代码是这样的:
oTreeView=thisform.oleTreeView
nArrRows=ALEN(Nodes,1)
nArrCols=ALEN(Nodes,2)
PUBLIC cParentKey,cNowKey,cPreviousKey
** 创建单个顶层节点
oTreeView.Nodes.Add(,,'ALL','全部对象')
FOR j=1 TO nArrCols
FOR i=1 TO nArrRows
IF i=1 AND j=1 && 创建第一个节点
cParentKey='ALL'
cNowKey=cParentKey+"_"+ALLTRIM(Nodes[i,j])
oTreeView.Nodes.add(oTreeView.Nodes.Item('ALL'),oTvwChild,cNowKey,ALLTRIM(Nodes[i,j]))
cPreviousKey=cNowKey
ELSE
IF i=1 && 创建每个层次的第一个节点
cParentKey='ALL'
FOR g=1 TO j-1
cParentKey=cParentKey+"_"+ALLTRIM(Nodes[i,g])
ENDFOR
cNowKey=cParentKey+"_"+ALLTRIM(Nodes[i,j])
oTreeView.Nodes.add(oTreeView.Nodes.Item(cParentKey),oTvwChild,cNowKey,ALLTRIM(Nodes[i,j]))
cPreviousKey=cNowKey
ELSE && 创建每个层次的非第一个节点
cParentKey='ALL'
FOR g=1 TO j-1
cParentKey=cParentKey+"_"+ALLTRIM(Nodes[i,g])
ENDFOR
cNowKey=cParentKey+"_"+ALLTRIM(Nodes[i,j])
IF cNowKey==cPreviousKey
LOOP
ELSE && 假如是层次中的其他点
cParentKey='ALL'
FOR g=1 TO j-1
cParentKey=cParentKey+"_"+ALLTRIM(Nodes[i,g])
ENDFOR
cNowKey=cParentKey+"_"+ALLTRIM(Nodes[i,j])
oTreeView.Nodes.add(oTreeView.Nodes.Item(cParentKey),oTvwChild,cNowKey,ALLTRIM(Nodes[i,j]))
cPreviousKey=cNowKey
ENDIF
ENDIF
ENDIF
ENDFOR
ENDFOR