我根据包含主人和主人的视图构建了一个交互式报告。详细数据,我使用Column Break让报告有意义,我使用主ID作为报告我使用FO Designer建立的链接,因此我使用隐藏的项目来设置ID值,并打印基于此值的报告。
所以我使用动态动作来设置记录中的值(使用$ s(' P50_NEW',this.triggeringElement.id))。但是价值并没有存储在项目(会话状态)中,而是我坚持到这里。
请有人可以帮我解决这个问题吗,以及如何让apex首先设置会话状态然后打印报告。
感谢。
答案 0 :(得分:7)
根据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'} );
答案 1 :(得分:1)
如果您需要设置会话状态以使用报告SQL源中的值,最简单的解决方案是在报告Page Items to Submit
属性中指定项目名称并刷新报告:
apex.item( "P50_NEW" ).setValue (this.triggeringElement.id);
apex.jQuery('#Report').trigger('apexrefresh');
(假设报告Static ID
是报告)