温馨提示:本文翻译自stackoverflow.com,查看原文请点击:oracle apex - APEX_ITEM POPUP referencing another apex_item

oracle apex - APEX_ITEM POPUP引用了另一个apex_item

发布于 2020-03-27 11:05:04

我有一个包含几个项目和一个PLSQL动态内容的页面。

顾名思义,动态内容会生成一堆动态项目,它们是动态的,它们是从表中获取的。

其中很多是POPUP_FROM_QUERY项,其中的QUERY也来自表。这在大多数情况下都适用,但是在某些情况下,QUERY引用了另一个动态生成的项目(例如,我为dept和name生成项目,您选择一个dept,名称项目仅显示该dept中的名称)。

代码看起来像这样:

  htp.p ((APEX_ITEM.POPUP_FROM_QUERY (p_idx => 2, p_value => '', p_item_id => 'dept_name', p_lov_query => 'SELECT dept department, dept_id id FROM departments WHERE dept_location = ''USA''', p_item_label => 'dept_name')));

  htp.p ((APEX_ITEM.POPUP_FROM_QUERY (p_idx => 2, p_value => '', p_item_id => 'emp_name', p_lov_query => 'SELECT emp emp_name, emp_id id FROM employees WHERE department = :dept_name', p_item_label => 'emp_name')));

I only put the relevant lines here, there are actually trios of lines, one with p_idx = 1, and one with p_idx = 4(apparently you need to leave one for the LOV) but these are all display only. When saving I reference them with apex_application.g_f01(i) where you replace 1 for the p_idx.

I have tried replacing the :dept_name with just about everything. apex_application.g_f02(1), dept_name(the p_item_id), g_f02(1), f02(1), f02_0001(when inspecting the item in consol this shows as id). I have tried all these and all these with ':' in front. I have also tried them just included in the parentheses of the select, and by doing 'select ..... where ..= ' || :dept_name || ''''. None of this seems to work, and I couldn't find anything online or within the documentation for APEX_ITEM

查看更多

查看更多

提问者
TineO
被浏览
26
TineO 2019-07-03 22:18

既然没有人回答,我一直在研究它,直到我找到了一个有点简单的解决方案,尽管它并不是完全动态的,但是您稍后会看到。

所有动态生成的项目的ID都类似于f02_0000,其中02是该项目的IDx,而0000是行(它生成的第一个项目是0000,第二个是0001,...)

我在页面上制作了一堆隐藏的项目,并制作了相同数量的应用程序项目,并依次命名(ITEM_1,ITEM2,...)

然后,我在页面上进行了一个动态操作,事件:更改,选择类型:jQuery选择器,jQuery选择器:input [name =“ f02”]-在我的场景中,您输入的所有apex_items均为p_idx => 2。

该DA具有Javascript操作,该操作可通过以下方式获取触发元素的编号:

parseInt(this.triggeringElement.id[this.triggeringElement.id.length -1])

当然,这只会获取id的最后一个数字,但是更改它很容易。

然后,我在这里还有一个将页面项的值分配给其对应的应用程序项的操作。

:APPLICATION_ITEM_1 := :ITEM_1;

我也将所有项目放入要提交的项目中

然后,我将所有LOV更改为使用相应的应用程序项。

我做了一些额外的事情,例如在刷新时清除所有页面和应用程序项,但是您可以尝试一下。

这行得通,但是有点麻烦,因为您需要使它适用于生成的项目。因此,如果您知道最多只能生成一定数量的项目,这会很好,如果可以生成大量的项目,那么您需要一个不同的解决方案。

发布
问题

分享
好友

手机
浏览

扫码手机浏览