请教treeview的递归生成

xhzlhc 2011-12-13 01:20:05
addchild(long handle1)
long li_i1,li_len,li_len2,ii_xx,li_count
string tmp
treeviewitem tvi
tv_info.getitem(handle1,tvi)
li_len = len(string(tvi.data))
li_len2 = li_len +2
tmp = "len(trim(dept_code)) = " +string(li_len2)+" and &
left(dept_code,"+string(li_len)+") = '"+string(tvi.data)+"'"
dw_temp.setfilter(tmp)
dw_temp.filter()
dw_temp.setsort("#1 A")
dw_temp.sort()
li_count = dw_temp.rowcount()
//messagebox("",li_count)
if (li_count >=1) then
for li_i1=1 to li_count
// tvi.data = dw_temp.getitemstring(li_i1,"dept_code")
// tvi.label = dw_temp.getitemstring(li_i1,"dept_name")
tvi.data = dw_temp.object.dept_code[li_i1]
tvi.label = dw_temp.object.dept_name[li_i1]
ii_xx=tv_info.insertitemlast(handle1,tvi)
// messagebox("",tvi.label)
addchild(ii_xx)
tv_info.getitem(ii_xx,tvi)
// messagebox("",tvi.label)
next
end if
return


注明: 如果把自调用屏蔽了完全没问题,一用自调用就出错
错误出现在 tvi.data = dw_temp.getitemstring(li_i1,"dept_code") 这段


---------------------------
PowerBuilder Application Execution Error (R0039)
---------------------------
Application terminated.

Error: Error accessing external object property dept_code at line 20 in function addchild of object w_1.
---------------------------
确定
---------------------------


整了一晚上,没法了,各位老大 给点思路吧
...全文
122 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xhzlhc 2011-12-22
  • 打赏
  • 举报
回复
楼上的哥们厉害啊,我开始想到过是递归dw出的问题,但是只有个模糊的东西,谢谢你啊
分给你了
guozhi201 2011-12-15
  • 打赏
  • 举报
回复
我看楼上说的都不对,问题应该就出在你的数据窗口dw_temp:
第一层的时候是没问题,但是当进入递归自己调用自己的时候,你就把dw_temp重新filter过了,所以,他递归出来返回上一层的时候,dw_temp的数据已经被你改变过了,不能返回。楼主细心想下这个思路先啦,至于解决办法,我相信你可以的。。。。。。。。还不懂的邮件这个qq253794849。。。记得给分!!!
ribut9225 2011-12-14
  • 打赏
  • 举报
回复
那么,问题就是出现在递归时
只能断点跟踪一下,看看问题是在第几层
路人甲cw 2011-12-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xhzlhc 的回复:]

你们说的我试了,没对 我不要自调用完全没问题的
还是谢谢了
[/Quote]
你上面的代码是写在GetItemString()函数里的?
xhzlhc 2011-12-13
  • 打赏
  • 举报
回复
你们说的我试了,没对 我不要自调用完全没问题的
还是谢谢了
ribut9225 2011-12-13
  • 打赏
  • 举报
回复
tvi.data = dw_temp.getitemstring(li_i1,"dept_code")

////////////////////////////

不能直接取数据窗口的值赋给data,需要使用一个临时变量

string ls_temp

ls_temp = dw_temp.getitemstring(li_i1,"dept_code")
tvi_data = ls_temp

xuam 2011-12-13
  • 打赏
  • 举报
回复
dw_temp 的列名有没有dept_code ?是不是弄错了?
PB菜鸟 2011-12-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ribut9225 的回复:]

tvi.data = dw_temp.getitemstring(li_i1,"dept_code")

////////////////////////////

不能直接取数据窗口的值赋给data,需要使用一个临时变量

string ls_temp

ls_temp = dw_temp.getitemstring(li_i1,"dept_code")
tvi_data……
[/Quote]
一、简介 通过这个课程带大家从零开发一款功能全面的后台管理系统,包括项目搭建、功能实现到最后的Linux系统部署全过程。本课程使用SpringMVC + Spring + Mybatis作为主体框架,使用AdminLTE作为前端框架,使用主流关系型数据库Mysql作为存储数据库,使用非关系型数据库Redis作为缓存数据库,并集成SpringSecuriy安全框架做权限的动态管理,集成Swagger2自动生成接口文档,集成Druid连接池进行SQL性能监控,集成ActiveMQ消息中间件进行异步解耦,提高性能。最后使用linux系统进行服务部署,并搭建nginx反向代理服务器提高网站性能。 二、学习目标 通过本课程的学习带大家掌握SSM框架的开发流程,并熟练使用SpringSecurity做为安全框架进行权限管理,整合相关优秀的开源框架进行功能开发。还在项目中带大家学习前端相关的Jquery、Bootstrap等知识。课程结束之后希望大家能做到独立进行开发项目的目的,增强解决问题的能力,具备功能落地实现的能力。 三、课程涉及知识点 SpringMVC源码分析Mybatis源码分析通用MapperMysql数据库Redis缓存实现ActiveMQ消息中间件SpringSecurity鉴权Swagger2接口文档生成自定义注解AOP切面编程自定义过滤器Logback日志整合Druid性能监控Linux系统Nginx反向代理Ajax异步请求技术Jquery基本使用AdminLTE前端框架Chart图表-线状图和饼状图百度地图定位城市BootStrap前端框架BootStrap-Table插件BootStrap-Treeview插件Markdown编辑器403、404、500错误页面配置数据库事务消息提示插件toastr.js图片上传插件bootstrap fileinput数字滚动效果pv/uv流量统计...四、课程部分内容截图如下 1、首页 2、菜单管理 3、图床管理 4、图标管理 5、留言反馈管理 6、druid监控 7、登录日志

609

社区成员

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

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