首页 > 解决方案 > Oracle Apex 18 穿梭项目在右侧显示最后选择的值

问题描述

我已经使用带有以下代码的动态操作成功实现了 Shuttle List

declare
    tab apex_application_global.vc_arr2;
begin
    tab := apex_util.string_to_table (:P14_NEW_1);
    for i in 1..tab.count loop
        insert into xxtest (COL1, COL2)
        values (:P14_NEW, tab(i));
    end loop;
    commit;
end;

问题是每次用户打开表单时,它都不会在右侧显示最后选择的值,我不明白这个逻辑如何在页面加载时将选定的项目显示为保存在表格中的右侧

标签: oracleoracle-apex

解决方案


您完成了工作的第一部分 - 将选定的值存储到表中。

下一步是将它们取回。为了做到这一点,

  • 导航到航天飞机项目的属性
  • 将其类型设置为“SQL 查询(返回冒号分隔值)
  • SQL 查询应如下所示:

    select listagg(col2, ':') within group (order by null)
    from xxtest
    where ... --> include condition, if there is any - I believe it should
    
  • 将“已使用”属性设置为“始终,替换会话状态中的任何现有值

运行页面;穿梭项目现在应该已填充右侧。

作为where条款:我不知道你在做什么的目的是什么,但是 - 如果你不区分存储在xxtest表中的行,所有用户将使用相同的记录集并覆盖彼此的数据。如果xxtest.col1代表用户名(这样就不会:P14_NEW而是:APP_USER),您应该在WHERE子句中使用它。否则,请考虑这样做。


推荐阅读