Oracle Apex 5.0使用JavaScript将值设置为项目

时间:2015-09-16 09:32:26

标签: javascript oracle oracle-apex

我根据包含主人和主人的视图构建了一个交互式报告。详细数据,我使用Column Break让报告有意义,我使用主ID作为报告我使用FO Designer建立的链接,因此我使用隐藏的项目来设置ID值,并打印基于此值的报告。

所以我使用动态动作来设置记录中的值(使用$ s(' P50_NEW',this.triggeringElement.id))。但是价值并没有存储在项目(会话状态)中,而是我坚持到这里。

请有人可以帮我解决这个问题吗,以及如何让apex首先设置会话状态然后打印报告。

感谢。

2 个答案:

答案 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是报告)