【问题标题】:Getting free of scrolling up after submit in Oracle Apex在 Oracle Apex 中提交后无需向上滚动
【发布时间】:2018-04-30 06:44:29
【问题描述】:

大家晚上好。

目前,我正在为 Oracle Apex 创建一个新页面,但我再次遇到了 Interactive Report 的问题。我的页面(命名为 500)由 id 为 rep_main 的 Interactive Report 和 id 为 rep_child 的 Classic 报表组成,它们通过主从逻辑连接(我选择行从主报告中,然后根据我的选择获得子项中的行)。此外,主报告的每一行都有几个按钮(精确地标记为“a”,带有“javascript:...”之类的链接),它们调用对话框窗口来更新所选行的数据。

我的目标是让页面对用户来说更舒适:首先,从主报告中选择的行应该改变它的颜色;其次,报告应正确刷新。第二个条件是,我在主报表中选择rown后,分页不能改变,页面视图不能自行向上滚动。

我设法在我的 IR 中创建主从逻辑并重新着色行(thanks to Stack Overflow 帮助我完成此任务),但我在正确刷新的条件下遇到了一些困难。除了 JavaScript/jQuery 函数,我必须调用标准 Apex 函数 apex.submit,因为如果我不这样做,我的 IR 的分页将不会保存,但同时页面自己向上滚动,这对用户来说是不太可能的。此外,任何对话窗口出现后,分页都会重置。

我试图在 Google 中找到解决方案,但一切都是徒劳的。我希望有人知道在我的情况下是否有任何解决方法(至少反对向上滚动)。

我使用 Oracle Apex 4.2.6.00.03,应用程序主要通过 Mozilla Firefox 执行。我为我的第 500 页编写的代码写在下面的当前帖子中。

在页面加载时使用 PL/SQL 行执行流程,如下所示:

:P500_MAIN_ID := APEX_UTIL.GET_NUMERIC_SESSION_STATE(P_ITEM => 'P500_MAIN_ID'); --receiving the chosen row's ID saved in session

主报告区域标题包含以下脚本:

<script>
  $("#rep_main").find("table.apexir_WORKSHEET_DATA td).live("click",function(){
    var chosenOne = $(this).find("span").attr("id"); //finding ID of the chosen row
    chooseMAIN(chosenOne);
    apex.submit({set:{'P500_MAIN_ID':chosenOne,'P500_CHILD_ID':null}});
  });
</script>

在这段代码中P500_CHILD_RN是保存子报表行ID的项,函数chooseMAIN是:

function chooseMAIN(docID){
  $.post('wwv_flow.show',
         {'p_request'      : 'APPLICATION_PROCESS=SET_MAIN',
          'p_flow_id'      : $v('pFlowId'),
          'p_flow_step_id' : $v('pFlowStepId'),
          'p_instance'     : $v('pInstance'),
          'x01'            : docID},
         function(data){
           //for the opportunity to get the ID in pure JavaScript
           $("#P500_MAIN_ID").val(docID);
           $("#P500_CHILD_ID").val("");
           $("#rep_main").trigger('apexrefresh');
           $("rep_child").trigger('apexrefresh');
         }
       );
}

SET_MAIN 过程如下所示:

begin
  APEX_UTIL.SET_SESSION_STATE(P_NAME => 'P500_CHILD_ID',P_VALUE => NULL);
  APEX_UTIL.SET_SESSION_STATE(P_NAME => 'P500_MAIN_ID',P_VALUE => APEX_APPLICATION.G_X01);
end;

附言早些时候我向 IR here 寻求了一些帮助,但我仍然没有找到合适的解决方案(除了提交,它有我所说的副作用)。

【问题讨论】:

    标签: javascript html oracle11g pagination oracle-apex


    【解决方案1】:

    在这种情况下您真正想要使用的是 FOEX 插件,因为它基于 AJAX,因此您无需提交。

    FOEX website

    帮自己一个忙,离开 4.2,你以后会感谢我的..

    【讨论】:

      猜你喜欢
      • 2021-09-05
      • 2022-01-19
      • 2021-07-02
      • 2019-09-08
      • 1970-01-01
      • 1970-01-01
      • 2022-11-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多