Apex Oracle多列弹出LOV:能否获取两个显示值d和d2?
在Apex Oracle多列弹出LOV中同时获取两个显示值的方法
可以实现,但默认情况下Apex只会将LOV查询里的r列(即id)作为返回值存储到绑定变量中。要同时拿到d(name)和d2(code)这两个显示值,可通过以下几种方式操作:
方法一:合并返回列后拆分
修改LOV查询,把需要的显示值和返回值用分隔符合并到r列中:SELECT name d, id || '|' || code r, code d2 FROM employees WHERE codes IN ('ABC','DEF','GHI') ORDER BY name后续在页面处理或计算项中,用字符串拆分函数拆分合并值,比如获取code的语句:
REGEXP_SUBSTR(:P1_EMPLOYEE_LOV, '\|(.*)$', 1, 1, NULL, 1)拆分后的值可分别存入对应的页面项。
方法二:通过动态操作联动查询
利用LOV的"更改"事件触发AJAX查询,根据选中的id获取对应显示值:- 创建两个隐藏页面项(如
P1_EMP_NAME、P1_EMP_CODE) - 给LOV项添加"更改"事件的动态操作
- 在操作中执行PL/SQL代码:
SELECT name, code INTO :P1_EMP_NAME, :P1_EMP_CODE FROM employees WHERE id = :P1_EMPLOYEE_LOV; - 设置执行后刷新这两个隐藏项,即可获取对应的显示值。
- 创建两个隐藏页面项(如
方法三:利用Apex新版本的额外返回值属性(20.1+)
若使用Apex 20.1及以上版本,可直接在LOV属性的"额外返回值"区域配置映射:- 将
name列映射到页面项P1_EMP_NAME - 将
code列映射到页面项P1_EMP_CODE
用户选择LOV项后,Apex会自动将这两个显示值填充到对应页面项中,无需额外编码。
- 将
内容的提问来源于stack exchange,提问作者Coding Duchess
相关产品推荐
相关产品推荐

