PowerBuilder treeview 样式
我这边表中有一列LEVEL(等级)注:数值【0=一级,1=二级,2=三级,3=四级。】要用treeview样式去实现,我怎么取LEVEL值各个级别中的0、1、2、3、实现...
我这边表 中有一列 LEVEL (等级)注:数值【0= 一级,1 = 二级,2 = 三级,3 = 四级。】要用treeview 样式 去实现,我怎么取 LEVEL 值各个级别中的0、1、2、3、实现这个树。
展开
展开全部
很少自己写,平时都是用封装好的,直接把表结构参数传进去~~
参考了网上别人的,用了递归,做简单数据试了下,希望有帮助吧。
连接数据库不用写了,在w_1 的open事件中加入:f_tree_init(tv_1,0,0)
下面是f_tree_init 方法
//====================================================================
// 事件: w_1.f_tree_init()
//--------------------------------------------------------------------
// 描述:
//--------------------------------------------------------------------
// 参数:
// value treeview atv_i
// value integer ai_lelel
// value long al_roothandle
//--------------------------------------------------------------------
// 返回: integer
//--------------------------------------------------------------------
// 作者: zhengshg 日期: 2014年06月21日
//--------------------------------------------------------------------
//
//--------------------------------------------------------------------
// 修改历史:
//
//====================================================================
treeviewitem ltvi_i
String ls_sql,ls_syntax,ls_error
int li_level
String ls_value
Long ll_handle
Long i
datastore lds_i
lds_i = CREATE datastore
ls_sql = "select lv,value from tb_test where lv = "+String(ai_lelel)
ls_syntax = sqlca.SyntaxFromSQL(ls_sql,'style(type=grid)',ls_error)
IF Len(ls_error) > 0 THEN
RETURN 0
ELSE
ls_error = ''
lds_i.Create(ls_syntax,ls_error)
IF Len(ls_error) > 0 THEN
RETURN 0
END IF
lds_i.SetTransObject(sqlca)
lds_i.Retrieve()
END IF
IF lds_i.RowCount() = 0 Then
RETURN 0
END IF
FOR i = 1 TO lds_i.RowCount( )
li_level = lds_i.Object.lv[i]
ls_value = lds_i.Object.value[i]
ltvi_i.Data = li_level
ltvi_i.Label = ls_value
ltvi_i.PictureIndex = 1
ltvi_i.SelectedPictureIndex = 2
ltvi_i.children = true
ll_handle = atv_i.InsertItemLast(al_roothandle,ltvi_i)
f_tree_init(atv_i,li_level + 1,ll_handle)
NEXT
atv_i.expanditem(ll_handle)
destroy(lds_i)
return 1
测试数据:oracle数据库
create table tb_test (
lv integer ,
value varchar2(10)
)
0 一级
1 二级
2 三级
3 四级
结果如下图:
微测检测5.10
2023-05-10 广告
2023-05-10 广告
您好!建议咨 深圳市微测检测有限公司,已建立起十余个专业实验室,企业通过微测检测就可以获得一站式的测试与认 证解决方案;(EMC、RF、MFi、BQB、QI、USB、安全、锂电池、快充、汽车电子EMC、汽车手机互 联、语音通话质量),认证遇...
点击进入详情页
本回答由微测检测5.10提供
展开全部
最简单的办法:pb12.5中有treeview datawindow
也可以用循环取值、判断然后赋值给treeview
也可以用循环取值、判断然后赋值给treeview
追问
treeview datawindow?PB11.5 上有没有?循环取值能不能举个例子
追答
long ll_row,ll_row_count , ll_leve
datastore lds_dstastore
treeviewitem ltvi_data
lds_datastore = CREATE datastore
lds_datastore.dataobject = "dw_customers" //dw_customers为已经存在的数据窗口对象
lds_datastore.settransobject(sqlca)
lds_datastore.retrieve()
ll_row_count = lds_datastore.rowcount()
FOR ll_row = 1 to ll_row_count
ll_leve=lds_datastore.getitemnumber(ll_row,"level")
if ll_leve=0 then
ltvi_data.label=lds_datastoree.getitemstring(ll_row," ...")
//为树形视图标签赋值
ltvi_data.data=lds_datastore.getitemstring(ll_row,"... ")
//为树形视图DATA变量(ANY类型)定义一个想保存的数据
ltvi_data.pictureindex=1
//定义图片索引
ltvi_data.selectedpictureindex=2
//定义选中图标
ltvi_data.children=true
//指定该节点仍有下级孩子节点
tv_1.insertitemlast( 0, ltvi_data)
//插入节点
........
NEXT
DESTROY lds_datastore
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询