带参数的下拉窗口的显示问题?

pbj 2002-12-01 12:23:34
我有数据窗口,dw_1(grid型)其中有code,type两个字段
code关联下拉数据窗口child_code,
type关联下拉数据窗口child_type
其中child_type含参数,即显示code相同的type.具体说就是,当用户输入商品信息时,先选择商品大类信息(code),再选择规格信息(大类相同的规格),这样在输入多条记录时
当选择规格信息时,会将其他记录的规格信息改变了,我想是下拉数据窗口(child_type)重新检索的原因,而且当检索数据后,规格显示也不正常。请问各位有什么解决方法吗?
...全文
28 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
bounty 2002-12-01
  • 打赏
  • 举报
回复
教你个简单的方法:在下拉数据窗口的‘code’列改变时,对下拉数据窗口做一循环:对不显示的行用setdetailheight(i,i,0)函数将其隐藏,对显示的行用setdetailheight(i,i,<行的高度>)显示即可。

setdetailheight()不太常用,有时能解决许多小麻烦,不清楚请查阅函数说明.

其实还有其他的方法可以解决。有时间再说吧!
george77 2002-12-01
  • 打赏
  • 举报
回复
这样做试试:
在dw_1的Itemchanged事件中
如果是code字段触发的,先用setitem将type显示置为空(这就保证了必须先选code,才能选type),然后用GetChild()函数得到type的子窗口child_type,根据当前code的值对child_type进行过滤(用setfilter(),filter()函数)

重新检索显示的时候
code字段没问题,
type字段可以这样做:
string ls_type,ls_code
dw_1.accepttext()
ls_code=dw_1.getitemstring(dw_1.getrow(),'code')
select type into :ls_type from tb where code=:ls_code;
if sqlca.sqlcode = 0 then
dw_1.setitem(dw_1.getrow(),'type',ls_type)
end if

toutou 2002-12-01
  • 打赏
  • 举报
回复
我得做法是:从数据窗口上删掉type列(并非从数据窗口的列选择中去掉不选),另在添加code相同的一列(从控件面板上选择添加,系统会自动命名为code_1),放在code列后,这样只要code的值变化,code_1的值就会保持一致,再将code_1列作成下拉式,display为type,data为code,这样可以不用那个该死的条件了
jdsnhan 2002-12-01
  • 打赏
  • 举报
回复
我按你的意思做了一次测试,这样试试:
datawindowChild child_code,child_type
dw_1.getchild('code',child_code)
dw_1.getchild('type',child_type)
child_code.settransobject(sqlca)
child_code.retrieve()
child_type.settransobject(sqlca)
child_type.retrieve(code)
dw_1.settransobject(sqlca)
dw_1.retrieve(自己的参数)
dw_1的Itemchanged事件中,
if dwo.name = 'code' then
child_type.retrieve(data)
end if
以上是我按我理解你的意思去做的,不知道正确与否,继续关注
xingsha 2002-12-01
  • 打赏
  • 举报
回复
gz

609

社区成员

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

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