当前位置: 代码迷 >> PB >> dw不同行,相同列,使用不同的下拉列表解决办法
  详细解决方案

dw不同行,相同列,使用不同的下拉列表解决办法

热度:163   发布时间:2016-04-29 05:24:08.0
dw不同行,相同列,使用不同的下拉列表
遇到个问题,现举个简单的例子:有一个datawindow,里面有3个列,姓名,类型,职务;姓名列可自由输入,类型列为一个下拉列表,值为:学生/老师,两个下拉项,当新增一行,并在类型中选择学生,则职务中出现下拉项为:班长/学习委员/等学生职务,当类型中选择老师时,职务下拉中为:校长/教导主任/等教师职务。

用describe再modify会把所有列的下拉都变为最后一次的修改了,
用setvalue也是一样,全部修改了,
请教还有别的什么办法吗。我的是pb12.5.2


------解决思路----------------------
你在rowfocuschanged事件里面“用describe再modify”不就行了
------解决思路----------------------
1、职务表中区分类型,选择类型的时候,职务的DWC过滤类型
2、动态更改职务对应的DDDW
------解决思路----------------------
引用:
Quote: 引用:

1、职务表中区分类型,选择类型的时候,职务的DWC过滤类型
2、动态更改职务对应的DDDW


各位好心的朋友,如果有时间,你们试下,我试了,都没法完美显示


N年前就碰到了,你可以这么试下

1.把录入的地方放在另一个FreeForm的数据窗口dw_2(里面只显示一行数据,用来录入的),在Grid数据窗口里选择一行时,把值赋到dw_2上,就能避过这个问题

2.或者也可以考虑,另外增加一列,用来录入和显示职务,它的下拉数据窗口设置:数据列和显示列都为名称,这一列只为显示,原来的列为保存数据

3.或者每次过滤时把需求数据过滤在上面,不需要的放在下拉数据窗口的后面,如选择教师时,校长/教导主任/等教师职务放在前面,班长的职务放在下面,另外再加个检验,也能解决
------解决思路----------------------
itemChanged事件:
if dwo.name="ctype" then
setitem(row,"cpost","")
if data="老师" then modify("cpost.values='校长 校长/教导主任 教导主任/'")
if data="学生" then modify("cpost.values='班长 班长/学习委员 学习委员/'")
end if
RowFocusChanged事件:
string ctype
ctype=getitemstring(currentrow,"ctype")
modify("cpost.values=''")
if ctype="老师" then modify("cpost.values='校长 校长/教导主任 教导主任/'")
if ctype="学生" then modify("cpost.values='班长 班长/学习委员 学习委员/'")
------解决思路----------------------
是不是这个效果?


  相关解决方案