【问题标题】:How to set value for the Oracle APEX Popup LOV如何为 Oracle APEX Popup LOV 设置值
【发布时间】:2020-06-08 15:50:23
【问题描述】:

我正在寻找一种在 Popup Lov 项目中设置值的方法。我正在使用 Oracle Apex,并且正在尝试使用动态操作设置 Popup LOV 的值。我想设置一年后从日期选择器中选择一个日期并在弹出的 LOV 项目中刷新年份。
在 Apex 上,我创建了一个名为 P2_YEAR 的弹出 Lov 项目和一个名为 P2_DATE 的日期选择器。在 P2_date,我创建了一个具有两个真实条件的动态操作(客户端条件项不为空 - P2_YEAR)。

第一个条件:执行pl\sql代码提取年份:

declare
   year number;
   tmp date;
begin
   tmp:=:P2_DATE;

   SELECT EXTRACT (YEAR  FROM  tmp) YEAR
   into year
   FROM DUAL;
   :P2_EXTRACT_YEAR := YEAR;
      return; 
end;

:P2_EXTRACT_YEAR 是隐藏的项目。

第二个条件:一个 Exectute Javascript 代码

$s('extractyear',$v('P2_EXTRACT_YEAR'));

在 P2_Year 中,我在 Advanced - CSS classes 中添加了类名 extractyear。

我将获得的是在弹出项目框中显示年份,如果我按下箭头以仅显示从日期中提取的之前的年份。

此配置不起作用。

【问题讨论】:

  • 您是否考虑过使用级联值列表来获得此功能?
  • 是的,可以考虑,但是day字段和year字段必须是独立的。在某种程度上,我设法通过更改第二个条件来解决它``` apex.item("P2_YEAR").setValue(apex.item("P2_EXTRACT_YEAR").getValue());``` 现在它可以工作了,但我当我按下按钮将所选值传递到下一页时,出现会话状态冲突错误。

标签: oracle-apex


【解决方案1】:

您的答案分为两部分:1) 生成 P2_YEAR 的值列表。 2) 设置 P2_YEAR 的值

1) 这可以通过对项目 P2_YEAR 使用级联 LOV 来实现。使用来源

WITH YEARS (yr) AS
(
  SELECT TO_CHAR(TO_DATE(:P2_DATE,'DD-MON-YYYY'),'YYYY')  + LEVEL - 2   FROM DUAL
    CONNECT BY LEVEL < 3
)
SELECT yr as r, yr as d FROM years

并设置父项 P2_DATE。 我的项目 P2_DATE 具有格式掩码 DD-MON-YYYY

现在如果 P2_DATE 发生变化,P2_YEAR 中的选项也会相应变化。

2) 使用 P2_DATE 更改的动态操作来执行此操作

第一个动作:设置值,pl/sql 表达式,EXTRACT( YEAR FROM TO_DATE(:P2_DATE,'DD-MON-YYYY')) 在项目 P2_EXTRACTYEAR 上

第二个动作:执行 javascript 代码,受影响的元素 Item P2_YEAR

apex.item("P2_DATE").setValue(apex.item( "P2_EXTRACTYEAR" ).getValue(),apex.item( "P2_EXTRACTYEAR" ).getValue()); 

【讨论】:

  • 感谢您的回答。您的查询非常有用。LEVEL -2 返回两年?请您解释一下为什么您使用 CONNECT BY LEVEL
  • CONNECT BY LEVEL 可用于生成虚拟行。我想要 2 年(所以 LEVEL
【解决方案2】:

右键单击 :P2_DATE 并选择创建动态操作。设置以下属性:

Event: Change
Selection Type: Items(s)
Item: P2_DATE

客户端条件

 Type: Item is not null
 Item(s): P2_DATE

右键单击动态动作并选择创建 TRUE 动作。设置以下属性:

 Action: Set Value
 Set Type: PL/SQL expression 
 PL/SQL expression : TO_CHAR(TO_DATE(:P2_DATE,'DD-MON-YYYY'),'YYYY')
 Items to Submit: P2_DATE
 Affected Elements > Selection Type: Item(s)
 Affected Elements > Item(s): P2_YEAR

错误操作

 Action : Set value
 Set Type: PL/SQL expression 
 PL/SQL expression : :P2_YEAR = ''
 Items to Submit: P2_YEAR
 Affected Elements > Selection Type: Item(s)
 Affected Elements > Item(s): P2_YEAR

【讨论】:

    猜你喜欢
    • 2021-06-02
    • 1970-01-01
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多