1

我在使用 Oracle ApEx 集合时遇到问题,不确定为什么我没有看到我认为我会看到的结果。

首先,我使用的是 Oracle ApEx v3.0

我基本上有以下设置,如本示例中所述,关于保留 Joel Kallman 的复选框,即:

http://joelkallman.blogspot.com.au/2008_03_01_archive.html

描述我的场景,我向用户发送记录列表,通过他们选择任意数量的复选框,使用 Joel 的示例,选择的记录存储在顶点集合“EMP_COLLECTION”中。

现在所有这些似乎都正确存储在“EMP_COLLECTION”中,但是当我尝试从集合中访问这些存储的值时,在作为 jQuery UI 对话框的 PL/SQL 区域内,我似乎无法获得这些值。

现在该页面尚未提交。因此,当用户选择多个复选框,这些复选框被存储在后端的 ajax 到“EMP_COLLECTION”中时,用户然后按下一个按钮,该按钮调用一个基本上执行调用的 javascript 函数,.dialog('open')一切正常。

然后调用我的 PL/SQL 区域块,在其中Region Header,我定义了以下内容:

<div id="dialog-1up-br" title="Requests - No Email Address"><img src="#WORKSPACE_IMAGES#info.gif" height="30" width="30"/>
  Please Note: You are receiving this notification as a valid email address is not available for: <br/><br/>

我的这个 PL/SQL 区域块的区域来源是:

BEGIN
  htp.p('<ul>');
  FOR i_rec IN ( SELECT a.c001 staff_id
                 FROM   apex_collections a
                 WHERE  a.collection_name = 'EMP_COLLECTION') LOOP
    htp.p('<li>'||i_rec.staff_id ||'</li>');
  END LOOP;
  htp.p('</ul>');
END;

所以基于上面的这个信息,当我的 jQuery UI 对话框基于这个 PL/SQL 区域出现时,我的区域标题信息显示正确,但下面没有任何内容,基于我的区域源 PL/SQL?

是因为我没有实际提交我的页面,因为我可以在会话变量中看到我的集合并且它具有正确的信息吗?

4

4 回答 4

2

如果 PL/SQL 区域是当前页面的一部分,则在页面加载时呈现其内容。当您使用 Javascript “显示”它时,它不会刷新,它仍然显示它最初显示的内容。

如果您使用报表区域而不是 PL/SQL 区域,则可以从 Javascript 动态刷新它。您只需要一个构建列表而不是表格的特殊报告模板。

由于您使用的是 APEX 3.0,因此刷新报告区域可能不是那么简单(我记不清了)。在这种情况下,也许您可​​以在按需流程中构建该区域的整个 HTML 并将其返回,然后您的 Javascript 可以调用按需流程并使用该流程返回的 HTML 填充 (HTML) 区域。

于 2012-09-06T11:51:27.693 回答
0

再次感谢托尼和汤姆的帮助。

正如建议的那样,我基本上执行了这里概述的内容:

由于您使用的是 APEX 3.0,因此刷新报告区域可能不是那么简单(我记不清了)。在这种情况下,也许您可​​以在按需流程中构建该区域的整个 HTML 并将其返回,然后您的 Javascript 可以调用按需流程并使用该流程返回的 HTML 填充 (HTML) 区域。

基本上,我使用了一个按需流程来获取所需的结果集,我从一个 JavaScript 函数调用它,从我页面上的“提交”按钮触发。现在使用一个 HTML 区域,我已经在其中设置了我的区域页眉和区域页脚,我只需使用$('#div-id').html(gReturn)我的按需流程将我的结果集返回到我的对话框中。

一切正常。

于 2012-09-06T16:00:25.270 回答
0

我也凑合吧。:-)
老实说,唯一出错的是你的 iframe 的渲染点。你可以做几件事:

  • 在渲染时创建 iframe,但不要设置其来源。单击按钮时,设置源,然后.dialog
  • 不要在渲染时创建 iframe。调用按钮时,创建 iframe $("div#container").html("<iframe src='...'></iframe>"),然后.dialog
  • 还可以选择简单地重新加载 iframe 源,请参阅 Reload an iframe with jQuery

那也应该解决它而没有太多麻烦。

于 2012-09-06T16:40:28.330 回答
0

另外,请确保集合名称是大写的,同时创建和查询它。(面临类似的问题并已解决)

于 2021-09-05T18:12:35.447 回答