Oracle APEX中Shuttle组件筛选项目后右侧显示ID而非名称如何解决
Oracle APEX Shuttle组件切换筛选器后右侧显示ID问题解决方案
前置检查
先确认Shuttle组件的基础配置正确:
- LOV的「返回值列」选择
r(对应test_run_id,符合你保留主键作为返回值的要求) - LOV的「显示值列」选择
d(对应name字段)
问题根源
该问题为Oracle APEX Shuttle组件的默认逻辑导致:Shuttle已选中项的显示值需要和当前LOV返回的结果集匹配,如果已选的返回值(test_run_id)不在当前筛选后的LOV结果内,系统无法找到对应的显示值name,就会直接展示返回值ID。选择「所有项目」时所有测试运行都在结果集内,因此显示正常;切换为特定项目后,跨项目的已选测试运行不在结果集内,就会出现显示ID的问题。
可选解决方案
方案1:保留跨项目已选记录,始终显示名称(推荐)
无需修改你原有的test_run_id as r配置,仅调整LOV查询,追加已选中的测试运行到结果集,保证所有已选ID都能匹配到对应的名称:
select name as d, test_run_id as r From test_run Where ( project_jira_key = coalesce(:TR_BASED_ON_PROJECT, project_jira_key) and folder_id NOT IN( select folder_id from folder where name in ( select column_value from table (apex_string.split(config.get('ATM_DASHBOARD_CONFIGURATION_FOLDER_EXCLUDE'), ',')) ) ) ) -- 追加当前Shuttle已选中的项,保证显示值可以正常匹配 OR test_run_id in (select column_value from table(apex_string.split(:PX_YOUR_SHUTTLE_ITEM, ':'))) order by name asc;
注意:把上述SQL中的PX_YOUR_SHUTTLE_ITEM替换为你实际Shuttle组件绑定的页面项名称。
方案2:切换项目时清空原有已选记录,避免显示ID
如果不需要保留跨项目的选中项,可以直接修改Shuttle组件属性:
- 找到Shuttle组件的「级联」属性组
- 将「级联刷新时清除值」设置为是
切换项目筛选器时会自动清空原来的选中项,不会再出现ID展示的问题。
内容的提问来源于stack exchange,提问作者Kalfja
相关产品推荐
相关产品推荐

