APEX 刷新 - 甚至在数据库更改之前页面刷新问题

APEX refresh- issue with the page refreshing even before db changes

我在 apex 中创建了一个经典报告。它本质上是一个简单的通知系统。 此报告的目的是查看活动通知。但我也希望用户能够关闭每个通知。为此,我创建了一个名为 'Close' 的虚拟列,并将其设为 link。每行都有一个垃圾桶图标。当用户按下它时,它会将数据库中的一列从 IS_READ= 0 更新为 IS_READ=1。 该系统运行良好,但我无法正确刷新。 当我删除通知时,页面刷新,但它显示旧状态,通知仍然存在。但是,当我手动刷新页面时,通知将消失。 我尝试了各种刷新技术(动态操作)和触发器,但没有任何效果。 您能告诉我如何仅在数据库发生更改后才进行刷新吗? 这是我的页面配置方式的解释: 这是通知系统

这是我删除(更新)记录的动态操作。 .delete-irrow 是垃圾桶图标的 jQuery 选择器

将您的动态操作更改为 execute javascript code。 然后在您的 javascript 代码中,使用如下成功回调:

apex.server.process("PP_UPDATETABLE", {}, {
  success: function(pData) {
    if (pData.success) {
          apex.region('yourregionsstaticid').refresh();
}
  }
})

之后,您唯一需要做的就是创建一个 AJAX 回调进程,名称为:PP_UPDATETABLE 在页面的处理部分,PL/SQL 来源为:

begin
    update yourtable
    set column = newvalue
    where id = :YOURIDFROMGRID;

    apex_json.open_object;
    apex_json.write('success',true);
    apex_json.close_object;
exception when others then
    apex_json.open_object;
    apex_json.write('success',false);
    apex_json.close_object;
end;   

此Ajax回调确保区域刷新代码仅在您定义的AJAX过程成功返回后执行。 如果您需要进一步的帮助或详细信息,我建议您使用相同的 grid/table 等创建一个 APEX 示例应用程序并共享 link 和凭据。