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

Chr*_*ose 1 javascript oracle-apex

  • P998_SESS_INFO 是我的经典报告
  • P998_REFRESH 是隐藏物品
  • P998_REFRESH_RATE 是具有 STATIC 静态值的 LOV:
    • 10 世坤殿;10000,
    • 20世昆顿;20000,
    • 30 世坤殿;30000

我在更改设置值时定义了一个 java 脚本表达式类型的动态操作P998_REFRESH

$x('P998_REFRESH').value = $x('P998_REFRESH_RATE').value;
Run Code Online (Sandbox Code Playgroud)

HTML 标题:

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

但这行不通。有什么建议吗?谢谢

rom*_*aga 5

两个问题:

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

$x('P998_REFRESH').value = $x('P998_REFRESH_RATE').value;
Run Code Online (Sandbox Code Playgroud)

尝试这个

$s('P998_REFRESH', $x('P998_REFRESH_RATE').value);
Run Code Online (Sandbox Code Playgroud)

2 - 您需要清除之前的 setInterval 值。设置新的间隔还不够。所以你需要在每次调用 setInterval 时存储在一个变量中

 var sintervalid = setInterval("jQuery('#P998_SESS_INFO').trigger('apexrefresh');", interval);
Run Code Online (Sandbox Code Playgroud)

并重置

clearInterval(sintervalid);
sintervalid = setInterval("jQuery('#P998_SESS_INFO').trigger('apexrefresh');", interval);
Run Code Online (Sandbox Code Playgroud)

如果我要做这样的事情,我会这样尝试:

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

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

2 - 我在更改存储间隔的项目时创建动态操作

动态动作:更改项目 P998_REFRESH_RATE

真正的动作:执行javascript代码:

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

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