Oracle apex 引用另一个APEX_项目的APEX_项目弹出窗口

Oracle apex 引用另一个APEX_项目的APEX_项目弹出窗口,oracle-apex,Oracle Apex,我有一个包含两个项目和PLSQL动态内容的页面 动态内容,顾名思义,会生成一组动态项,它们的数量和内容是动态的,我从表中获取它们 其中相当多是从查询项中弹出的,其中的查询也是从表中获取的。这适用于大多数情况,但也有一些情况下,查询会引用另一个动态生成的项,如“我为部门生成项”和“名称”,如果选择一个部门,则“名称”项仅显示该部门中的名称 代码如下所示: htp.p ((APEX_ITEM.POPUP_FROM_QUERY (p_idx => 2, p_value => '', p

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

动态内容,顾名思义,会生成一组动态项,它们的数量和内容是动态的,我从表中获取它们

其中相当多是从查询项中弹出的,其中的查询也是从表中获取的。这适用于大多数情况,但也有一些情况下,查询会引用另一个动态生成的项,如“我为部门生成项”和“名称”,如果选择一个部门,则“名称”项仅显示该部门中的名称

代码如下所示:

  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')));
我只把相关的行放在这里,实际上有三行,一行是p_idx=1,一行是p_idx=4,显然你需要留一行给LOV,但这些都只是显示而已。保存时,我使用apex_application.g_f01i引用它们,其中您将1替换为p_idx


我试着用几乎所有的东西来替换:dept_名称。apex_application.g_f021,dept_Name p_项目id,g_f021,f021,f02_0001在控制台中检查项目时显示为id。我已尝试了所有这些以及前面带有“:”的所有这些。我也尝试过将它们包含在select的括号中,并通过执行“select…”来实现。。。。。其中..='| |:部门名称| |。所有这些似乎都不起作用,我无法在网上或APEX_ITEM的文档中找到任何内容,因为没有人回答我,直到我找到了一个简单的解决方案才开始工作,尽管它并不像您稍后看到的那样完全动态

所有动态生成的项目都有类似f02_0000的ID,其中02是项目的idx,0000是行。它生成的第一个项目是0000,第二个是0001

我在页面上创建了一堆隐藏项和相同数量的应用程序项,并在sequenceITEM_1,ITEM2

然后我在页面上做了一个动态操作,Event:Change,Selection Type:jqueryselector,jqueryselector:input[name=f02]——在我的场景中,您输入的所有apex\u项都是p\u idx=>2

此DA有一个Javascript操作,该操作使用

parseInt(this.triggeringElement.id[this.triggeringElement.id.length -1])
这当然只获取id的最后一个数字,但是更改它很容易

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

:APPLICATION_ITEM_1 := :ITEM_1;
我还将所有项目放入要提交的项目中

然后我更改所有LOV以使用相应的应用程序项

我做了一些额外的事情,比如在刷新时清除所有页面和应用程序项等等,但是您可以处理这些

这是可行的,但这是一个有点脏的解决方案,因为您需要使它适用于您生成的项目。所以,如果你知道你将只生成一定数量的项目,这将是好的,如果它可以上升到一个荒谬的数量的项目,那么你需要一个不同的解决方案