簡體   English   中英

如何從多選 lov 中檢索所選項目並將它們與預定列表進行比較,作為 oracle apex 18.2 中的動態操作?

[英]How do I retrieve selected items from a multi-select lov and compare them to a predetermined list as a dynamic action in oracle apex 18.2?

我的問題是根據用戶在 LOV 中的選擇顯示或隱藏切換頁面項目。 我的目標是僅在用戶從 LOV 中選擇相關項目時才顯示此開關。 例如,如果用戶做了兩個選擇“狗”和“貓”,那么我希望出現是/否開關。 如果他們選擇“大象”,那么我不想要它。

我在 LOV 項目上創建了一個動態操作,客戶端條件為“項目在列表中”,列表為“23,24”。 只要我只從 LOV 中選擇一個條目,一切都正常。 一旦我選擇了一個額外的條目,開關就會消失(因為隱藏的 False 動作被踢了)。

我懷疑這不會起作用,因為多選 LOV。 它可能會在幕后進行比較,例如“兩個值 IN (23,24)”。 我可以使用“JavaScript 表達式”選項而不是“項目在列表中”來完成這項工作嗎? 如果是這樣,一個例子將不勝感激!

基本上,我想編碼,“在用戶所做的所有選擇中,如果項目 23 和/或 24 是其中的一部分,則顯示開關”。

這樣的代碼怎么樣? 這將是一個返回布爾條件類型的函數 見內評論。

declare
  l_max number(1);
begin
  with lovs as
    -- split multi-selected values into rows
    (select regexp_substr(:P1_LOV_ITEM', '[^:]+', 1, level) val
     from dual
     connect by level <= regexp_count(:P1_LOV_ITEM, ':') + 1
    )
  -- check whether any of extracted LOV values exists in list you're interested in (23, 24)
  select max(1)
    into l_max
    from lovs l
    where l.val in (23, 24);

  -- if some of values exists, return TRUE and - thus - display the Switch item
  return l_max = 1;
end;

對此的答案是在 LOV 上使用 Dynamic Action a Change 事件,客戶端條件類型為“javascript 表達式”,如下所示:

(P40_LOV.value).search("23") >= 0 || (P40_LOV.value).search("24") >= 0;

對於“真”結果,我使用了內置的“顯示”操作,對於“假”結果,我使用了內置的“隱藏”操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM