APEX 5.1 autorefresh具有可变刷新时间的区域

时间:2018-03-23 13:39:23

标签: javascript oracle-apex

  • P998_SESS_INFO是我的经典报告
  • P998_REFRESH是隐藏的项目
  • P998_REFRESH_RATE是LOV,静态值为STATIC:
    • 10 Sekunden; 10000,
    • 20 Sekunden; 20000,
    • 30 Sekunden; 30000

我在P998_REFRESH的更改集值上定义了类型为java脚本表达式的动态操作:

$x('P998_REFRESH').value = $x('P998_REFRESH_RATE').value;

HTML标头:

<script type="text/javascript">
  var interval = `$`v("P998_REFRESH");
  // refresh every 10 seconds
  setInterval("jQuery('#P998_SESS_INFO').trigger('apexrefresh');", interval); 
</script>

但这不起作用。有什么建议吗?谢谢

1 个答案:

答案 0 :(得分:2)

两个问题:

1 - 此代码不会启动项目的事件更改。 (这会更改页面上的值,但不会触发动态操作)。 而不是这个

$x('P998_REFRESH').value = $x('P998_REFRESH_RATE').value;

试试这个

$s('P998_REFRESH', $x('P998_REFRESH_RATE').value);

2 - 您需要清除之前的setInterval值。设置新的间隔是不够的。因此,每次调用setInterval

时都需要存储一个变量
 var sintervalid = setInterval("jQuery('#P998_SESS_INFO').trigger('apexrefresh');", interval);

并重置

clearInterval(sintervalid);
sintervalid = setInterval("jQuery('#P998_SESS_INFO').trigger('apexrefresh');", interval);

如果我要这样做,我会这样试试:

1 - 我在html标题中创建了一个全局变量,设置了默认值:

<script type="text/javascript">
  var sIntervalId = setInterval(function(){ 
                      jQuery('#P998_SESS_INFO').trigger('apexrefresh');
                    }, 30000);
</script>

2 - 我在更改存储间隔

的项目时创建动态操作

动态行动: 更改项目P998_REFRESH_RATE

真实行动: 执行javascript代码:

clearInterval(sIntervalId);
sIntervalId = setInterval(function(){ 
                          jQuery('#P998_SESS_INFO').trigger('apexrefresh');
                        }, $x('P998_REFRESH_RATE').value);

***我没有对此进行测试,但这或多或少都会这样。