Oracle apex表格格式刷新问题

时间:2018-12-27 07:03:06

标签: oracle-apex oracle-apex-5

我有一个Oracle顶点表格形式,它从临时表GL_TEMP中选择数据。临时表中的数据插入“按需处理” ajax调用中,该调用通过单击click来执行。插入数据后,使用代码执行表格刷新刷新

 $('#TBN').trigger('apexrefresh');  

其中TBN是表格形式的静态ID。此表格格式的主要页面刷新选项设置为“是”。但是上面的javascript刷新触发器显示了一些异常行为。有时,表格形式的刷新在第一次单击按钮时起作用,有时需要两次或三次甚至更多的按钮单击才能刷新表格形式并加载数据。我已验证临时表中的数据插入没有问题。我已经尝试了代码

apex.event.trigger( "#TBN ", "apexrefresh" );

也可以,但结果没有变化。只有表格形式的刷新动作显示某些异常行为。 oracle apex版本5.0.3。我的按需流程调用在这里

 var $wP;

 setTimeout(function(){
        $wP = apex.widget.waitPopup();
 }, 10);

 apex.server.process("INSERT_GL_NOTICE", {

         x01: $('#P390_HEAD').val(),
         x02: $('#P390_MAILHEAD').val(),
         x03: $('#P390_INTDT').val(),
         x04: $('#P390_TRANSDT').val(),  
         x05: $('#P390_FROMDT').val(),
         x06: $('#P390_TODT').val(),
         x07: $('#P390_INTERVAL_MM').val(),
         x08: $('#P390_EXCLUDE_SUBSIDY').val()

         },{type: "GET", dataType: "json", success: function( json ) {

                  $wP.remove();
                  $('#TBN').trigger('apexrefresh'); // TBN- id for tabular form
                  if(json.MSG){
                       alert(json.MSG);
                  }


           },    
     })

这是我的按需流程

declare
msg_stat varchar2(100);
msg varchar2(250);
cnt number;
cnt1 number;
transdt date;
mhead varchar2(8);
intdt date;
cd varchar2(8);
fdt date;
tdt date;
gen_id varchar2(50);
brcd varchar2(5):=apex_util.get_session_state('APP_BRCODE');
intr_mm number;
exc_sub char(1);
L_JSON_STR varchar2(4000);

begin

  cd:=apex_application.g_x01;
  mhead:=apex_application.g_x02;
  intdt:=apex_application.g_x03;
  transdt:=NVL(apex_application.g_x04,SYSDATE);
  fdt:=apex_application.g_x05;
  tdt:=apex_application.g_x06;
  intr_mm:=nvl(apex_application.g_x07,2);
  exc_sub:=nvl(apex_application.g_x08,'N');

  transdt:=trunc(sysdate);

  if mhead is null then
      msg:='Mail Head should be Entered ';
      Raise_application_error(-20001,msg);
  end if;

  if intdt is null then
     msg:='Interest Calculation Date Not Entered ';
      Raise_application_error(-20001,msg);
  end if;

  if tdt>=intdt then
     msg:='Int Date should be greater or Equal to To Date';
    intdt:=sysdate+10;
  end if;

  APEX_INSERT_GLNOTICE_TEMP(brcd,cd,fdt,tdt,intdt,mhead,intr_mm,exc_sub,msg_stat,gen_id);
  apex_util.set_session_state('APP_GEN_ID',gen_id);
  L_JSON_STR:='{
   "MSG":"'||msg_stat||'"
  }';
  SYS.HTP.P(L_JSON_STR);
  return; 

exception when others then  
    apex_util.set_session_state('APP_GEN_ID',null);
   L_JSON_STR:='{
     "MSG":"'||msg||'"
  }';
  SYS.HTP.P(L_JSON_STR);
  return; 

end;

这是我的表格查询

select 
"BRCODE",
"CODE",
"REPT_GEN_ID",
"ACCNO",
"LOANDT",
"LNAME"
from "GL_TEMP"
where REPT_GEN_ID=apex_util.get_session_state('APP_GEN_ID')

1 个答案:

答案 0 :(得分:1)

您如何称呼此按需流程?

如果此按需流程以表格的形式运行,则问题可能只是刷新区域之前执行这些操作的延迟时间。

我认为您正在使用apex.server.process来调用此过程。在这种情况下,请尝试 向用户显示一些信息,使他们知道应用程序正在执行某些操作 https://docs.oracle.com/database/apex-18.1/AEXJS/apex.widget.html

var $wP;

apex.server.process("INSERT_GL_NOTICE", {
     x01: $('#P390_HEAD').val(),
     x02: $('#P390_MAILHEAD').val(),
     x03: $('#P390_INTDT').val(),
     x04: $('#P390_TRANSDT').val(),  
     x05: $('#P390_FROMDT').val(),
     x06: $('#P390_TODT').val(),
     x07: $('#P390_INTERVAL_MM').val(),
     x08: $('#P390_EXCLUDE_SUBSIDY').val()

     },{type: "GET", dataType: "json", 

        beforeSend: function() {
           $wp = apex.widget.waitPopup();
        },

        success: function( json ) {
              $wP.remove();
              $('#TBN').trigger('apexrefresh'); // TBN- id for tabular form
              if(json.MSG){
                   alert(json.MSG);
              }
       },    
 })