我遇到了Oracle ApEx Collections的问题,并且不确定为什么我没有看到我认为的结果。
首先,我使用的是Oracle ApEx v3.0
我基本上有这个例子中描述的关于保留Joel Kallman复选框的设置,即:
http://joelkallman.blogspot.com.au/2008_03_01_archive.html
描述我的场景,我向用户提供了一个记录列表,他们选择了任意数量的复选框,使用Joel的例子,所选记录存储在顶点集合'EMP_COLLECTION'中。
现在所有这些似乎都在'EMP_COLLECTION'中正确存储,但是当我尝试从集合中访问这些存储的值时,在PL / SQL区域(jQuery UI对话框)中,我似乎无法获得价值观。
此时此页面尚未提交。因此,当用户选择存储在后端的ajax的多个复选框到'EMP_COLLECTION'中时,用户然后按下调用基本执行.dialog('open')
调用的javascript函数的按钮,这一切都正常。
然后调用我的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,它下面没有任何内容?
是不是因为我实际上没有提交我的页面,因为我可以在会话变量中看到我的收藏,并且它有正确的信息?
答案 0 :(得分:2)
如果PL / SQL区域是当前页面的一部分,则在加载页面时呈现其内容。当你使用Javascript“显示”它时它没有刷新,它仍然显示它最初显示的内容。
如果您使用报告区域而不是PL / SQL区域,则可以从Javascript动态刷新它。您只需要一个特殊的报告模板来构建列表而不是表格。
由于您使用的是APEX 3.0,刷新报表区域可能并不那么简单(我无法确定)。在这种情况下,也许您可以在按需流程中构建区域的整个HTML并返回它,然后您的Javascript可以调用按需流程并使用流程返回的HTML填充(HTML)区域。
答案 1 :(得分:0)
再次感谢Tony和Tom的帮助。
正如你建议托尼,我基本上执行了你在这里概述的内容:
由于您使用的是APEX 3.0,因此刷新报表区域可能不是这样 简单(我不记得肯定)。在那种情况下,也许你可以 在按需进程中构建区域的整个HTML 返回它,然后你的Javascript可以调用按需进程和 使用流程返回的HTML填充(HTML)区域。
基本上使用按需进程来获取所需的结果集,我从javascript函数调用,从我页面上的“提交”按钮触发。现在使用HTML区域,我已经设置了区域页眉和区域页脚,我只需使用$('#div-id')将结果集返回到对话框中.html(gReturn);来自我的按需流程。
一切正常。
再次感谢。
答案 2 :(得分:0)
我还要插手。 :-)
老实说,唯一出错的就是你的iframe呈现的点。你可以做几件事:
.dialog
$("div#container").html("<iframe src='...'></iframe>")
,
然后是.dialog
这也应该解决它而不会有太多的麻烦。