Oracle Apex 5.0使用JavaScript设置项目的值

5
我基于包含主数据和细节数据的视图构建了一个交互式报告,并使用列分隔符让报告更有意义。我使用主ID作为链接到使用FO Designer构建的报告,因此我使用了隐藏项来设置其中的ID值,并根据此值打印报告。
因此,我使用动态操作从记录中设置值(使用 $s('P50_NEW',this.triggeringElement.id))。但是该值未存储在项(会话状态)中,我陷入了困境。
请问有人可以帮我如何解决这个问题,以及如何使APEX首先设置会话状态然后再打印报告吗?
谢谢。
2个回答

9
根据 API 参考文档$s('P50_NEW',this,triggeringElementId) 不会在会话状态中设置数值,它只是设定当前页面的数值范围,而不是整个会话的数值范围。
要在会话状态中设置数值,您可以调用 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
如果您需要设置会话状态以在报告SQL源中使用该值,则最简单的解决方案是在报告的 Page Items to Submit 属性中指定项目名称并刷新报告:
apex.item( "P50_NEW" ).setValue (this.triggeringElement.id);
apex.jQuery('#Report').trigger('apexrefresh');

假设报告的静态ID为Report。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接