1

我有以下选择语句,但不确定当用户从 LOV 中选择选项时如何设置动态操作以分配当前 sysdate。当通过动态操作进行 LOV 选择时,我基本上想自动将“DATE_CALLED”字段填充到 sysdate。

尝试从该线程中使用与复选框相反但似乎无法解决的相同处理 - 请参阅:

Oracle ApEx 复选框以在选中/未选中时操作其他值

select  APEX_ITEM.HIDDEN(1,change_id) ||
        APEX_ITEM.HIDDEN(2,contact_id) ||
        APEX_ITEM.SELECT_LIST_FROM_LOV(p_idx => 10,
                                       p_value => reason_id,
                                       p_lov => 'LOV_REASONS',
                                       p_attributes => 'class="lov_select"',
                                       p_show_null => 'YES',
                                       p_null_value => NULL,
                                       p_null_text => '--- Please select a reason ---') reas,
        APEX_ITEM.TEXT(p_idx => 20, 
                       p_value => TO_CHAR(date_contacted,'DD/MM/YYYY HH24:MI'),
                       p_size => 14,
                       p_attributes => 'class="date_val" readonly="readonly" style="background-color:#B0C4DE;border:1px solid #999999;"') "DATE_CALLED",
        APEX_ITEM.TEXTAREA(p_idx => 30,
                       p_value => comments,
                       p_rows => 2, 
                       p_cols => 30 ) "MPA_COMMENT"
from  MY_TABLE

对于动态行动,我有以下内容:

Dynamic action: "lov selection"
Event: Change
Selection Type: jQuery Selector
jQuery Selector: .lov_select (this is the class I added to the select list from lov in the sql)
Condition: JavaScript Expression
Value: ****** Unsure what I need to put here ******

对于真正的行动,我有以下几点:

True Action:
Sequence: 10
Action: Execute PL/SQl Code
Fire On Page Load: No
Code: :P1_DEF_DATE := TO_CHAR(SYSDATE,'DD/MM/YYYY HH24:MI'); and have Page Item Submitted and Returned

Sequence: 20
Action: Execute JavaScript Code
Fire On Page Load: No
Code: $(this.triggeringElement).closest("tr").find("td[headers='DATE_CALLED'] input").val($v('P1_DEF_DATE'));

此代码不起作用,因为$(this.triggeringElement)对于选择列表不正确。

如何根据 select_list_from_lov 场景而不是复选框来实现我所需要的?

4

1 回答 1

1

我使用复选框上的条件来区分选中/未选中状态,并能够定义真假动作。您实际上并不需要在复选框上这样做:只要值更改(即:用户选择另一个选项),就会触发更改。

但是,如果您想捕获无效/空选项,您可以使用条件,但不是使用 javascript 表达式,而是使用运算符之一来测试值(例如:“=”和“1”)

要进一步详细说明您的选择列表上的操作:
这是我用来设置示例的查询:

select 
apex_item.checkbox2(p_idx => 1, p_value => empno, p_attributes => 'class="check_select"') empselection,
apex_item.text(2, :P14_DEF_TEXT) empname,
APEX_ITEM.SELECT_LIST_FROM_LOV(p_idx => 3,
                                       p_value => NULL,
                                       p_lov => 'LOV_REASONS',
                                       p_attributes => 'class="lov_select"',
                                       p_show_null => 'YES',
                                       p_null_value => NULL,
                                       p_null_text => '--- Please select a reason ---') reas,
apex_item.text(4, null) some_text,
empno,
ename,
comm
from emp

我使用了一个带有静态值的 lov LOV_REASONS

对 lov 选择的动态操作

真实行动中的代码:

$(this.triggeringElement).closest("tr").find("td[headers='SOME_TEXT'] input").val("THIS IS A TEST");

这对我来说似乎很好。

于 2012-08-29T12:02:49.930 回答