【问题标题】:Oracle APEX - Interactive Grid - Sorting Select List column on return valueOracle APEX - 交互式网格 - 根据返回值对选择列表列进行排序
【发布时间】:2022-01-20 21:37:17
【问题描述】:

我在交互式网格中有一个选择列表列。它显示星期的缩写(荷兰语):

  • 马 - 1
  • 迪 - 2
  • 窝-3
  • 做 - 4
  • VR - 5
  • Za - 6
  • Zo - 7

等等……

如果我们现在按此列排序,它会按其显示值而不是返回值排序。

我知道 APEX 使用一个对象来显示如下:

{d: 'Ma', r: '1'}

是否可以根据返回值而不是显示值对 Select List 列进行排序?通过排序,我的意思是单击交互式网格列标题上的向上或向下箭头:

【问题讨论】:

    标签: oracle oracle-apex interactive-grid


    【解决方案1】:

    为什么要更改渲染页面?使用 sql select 语句作为选择列表的源要简单得多。这为您提供了所需的所有灵活性:

    WITH dotw (dayabbr, nr) AS
    (
    SELECT 'Ma',1 FROM DUAL UNION ALL
    SELECT 'Di',2 FROM DUAL UNION ALL
    SELECT 'Wo',3 FROM DUAL UNION ALL
    SELECT 'Do',4 FROM DUAL UNION ALL
    SELECT 'Vr',5 FROM DUAL UNION ALL
    SELECT 'Za',6 FROM DUAL UNION ALL
    SELECT 'Zo',7 FROM DUAL 
    )
    SELECT 
      dayabbr AS d, 
      nr AS r FROM dotw 
    ORDER BY nr
    
    D   R
    Ma  1
    Di  2
    Wo  3
    Do  4
    Vr  5
    Za  6
    Zo  7
    

    【讨论】:

    • 我认为这与 Ej Egyed 提供的解决方案相同;感谢您的回答,但是,我相信这是对实际 LOV 进行排序,而不一定是根据 LOV 的返回值对交互式网格中的记录进行排序。我编辑了问题以使其更清楚。
    • 嗯...我明白你的意思,我不确定这是否可能。您可能知道有几个解决方法:(1) 创建一个只有返回值的列,按该列排序,隐藏该列并保存为默认报告。 (2) 将返回值添加到显示值 - 1 - Ma、2 - Di 等,但都有点笨重
    【解决方案2】:

    在 LOV(共享组件 > 值列表)的定义中,您可以定义顺序。

    如果您使用的是静态值列表,则需要为您希望它们出现的顺序指定序列列。

    如果您使用的是动态 LOV,则可以指定呈现列表的排序顺序。

    【讨论】:

    • 感谢您的回答,但是,我相信这是对实际 LOV 进行排序,不一定是根据 LOV 的返回值对交互式网格中的记录进行排序。我编辑了问题以使其更清楚。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 2020-02-22
    • 1970-01-01
    • 2021-05-29
    相关资源
    最近更新 更多