关于树状图

dzz1987terry 2009-05-11 09:42:34
我的表格是ID,NAME,TYPE,P_ID,想显示多层,但是我只能显示出3层,接下来的就不知道怎么做了··还有我想根据ID和P_ID的关系分层,怎么做??下面是我的语句:(这是W_webtree的open事件里的语句)
dw_1.settransobject(sqlca)
dw_1.retrieve()
dw_2.settransobject(sqlca)
dw_2.retrieve()
long l_newitem,i,j,
integer i_rowcount,Id1,Id2
treeviewitem ltvi_item
string name,type1,type2
tv_1.setredraw(false)
tv_1.deleteitem(i_rootitem)
ltvi_item.label="webtree"
ltvi_item.pictureindex=1
ltvi_item.selectedpictureindex=1
i_rootitem=tv_1.insertitemlast(0,ltvi_item)
for i=1 to dw_1.rowcount() step 1
type1=dw_1.getitemstring(i,'Type')
type2=dw_1.getitemstring(i,'Name')
Id1=dw_1.getitemnumber(i,'ID')
ltvi_item.label=type1
ltvi_item.label=type2
ltvi_item.data=Id1
ltvi_item.pictureindex=2
ltvi_item.selectedpictureindex=2
l_newitem=tv_1.insertitemlast(i_rootitem,ltvi_item)
for j=1 to dw_2.rowcount() step 1
if type1=dw_2.getitemstring(j,'Type') then
type2=dw_2.getitemstring(j,'Type')
Id2=dw_2.getitemnumber(j,'ID')
name=dw_2.getitemstring(j,'Name')
ltvi_item.data=Id2
ltvi_item.label=name
ltvi_item.pictureindex=3
ltvi_item.selectedpictureindex=3
tv_1.insertitemlast(l_newitem,ltvi_item)
end if
next
next
tv_1.setredraw(true)
tv_1.expanditem(i_rootitem)
...全文
402 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
永生天地 2009-05-12
  • 打赏
  • 举报
回复
楼主:我刚做tree时也是你这样做,但是后来我就不这样做了,因为当数据非常多是打开时很慢。

你可以考虑窗口打开时只加载根节点,在itempopulate事件里写上其下一级节点的加载,类似于windows资源管理器的方式。
newease 2009-05-12
  • 打赏
  • 举报
回复
能实现3层就能实现多层,关键是如何设计层次和关系 ,看下面数据

"70" "广播电视设备"
"701" "广播、电视发射设备"
"7012" "电视发射设备"
"701204" "电视差转机"
"701205" "机动电视发射台"
"701206" "发射机插头"

可以看出70下级为701 ,701下级7012 7012 下级又包含 701204 101205 701206

这样就可以很清楚做成树形

当然还有很多方法可以建立树形关系

最好先看看实例,清楚如何组织关系,如何构建形树,就很容易实现了

如果需要可以给你发实例,学习一下

609

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder DataWindow
社区管理员
  • DataWindow社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧