我基于包含主要和详细信息数据的View构建了一个交互式报告,我使用了Column Break让报告有意义,我使用了主ID作为报告我使用FO Designer构建的链接,因此我使用了隐藏项目,用于设置其中的ID值,并根据此值打印报告。
所以我使用动态动作来设置记录中的值(使用$ s('P50_NEW',this.triggeringElement.id))。但是该值没有存储在项目(会话状态)中,而且我坚持到这里。
请任何人可以帮助我如何做到这一点,以及如何让apex首先设置会话状态然后打印报告。
谢谢。
根据API Reference,$s('P50_NEW',this,triggeringElementId)
没有设置会话状态的值。 $s(...)
设置的范围是针对当前页面,而不是针对会话。
要在会话中设置值,您可以调用apex.server.process
API来设置会话中的值。
因此,更新的动态执行Javascript将如下所示:
$s('P50_NEW',this.triggeringElement.id);
apex.server.process ( "SAVE_HIDDEN_VALUE_IN_SESSION_STATE", {
x01: "set_session_state",
pageItems: "#P50_NEW"
}, {dataType: 'text'} );
如果您需要设置会话状态以使用报告SQL源中的值,则最简单的解决方案是在报告Page Items to Submit
属性中指定项目名称并刷新报告:
apex.item( "P50_NEW" ).setValue (this.triggeringElement.id);
apex.jQuery('#Report').trigger('apexrefresh');
(假设报告Static ID
是报告)