首页 > 解决方案 > 将动态操作添加到动态创建的按钮

问题描述

根据我之前的帖子,我正在 Oracle Apex (v21.1) 上构建某种仪表板。我的仪表板显示每个部门的库存状态。如您所见,我在列表末尾添加了一个按钮,该按钮仅在状态为“已验证”时显示(绿线)

在此处输入图像描述

这是我的交互式报告的代码:

SELECT 
    PK_DASHBOARD,
    FK_SERVICE_DASHBOARD,
    ETAT_DASHBOARD,
    DATE_DASHBOARD,
  CASE
    WHEN etat_dashboard = 1 THEN '<button>Libérer</button>'
  END as bt_dashboard,
  CASE 
    WHEN etat_dashboard = 0 THEN '<a href="mailto:'||email_dashboard||'?Subject=RAPPEL - Inventaire communal"><span aria-label="Mail"><span class="fa fa-envelope-o" aria-hidden="true" title="Mail"></span></span></a>'
    WHEN etat_dashboard = 1 THEN '<span aria-label="Mail"><span class="fa fa-check-circle-o" aria-hidden="true" title="Mail"></span></span>'
  END as ico_dashboard
FROM inv_tb_dashboard

当用户按下按钮时,我想添加一个动态操作。我不知道如何将动态操作链接到以这种方式创建的按钮。是否有某种带有 a 的 javascript 函数,getElementById或者我应该将 a 添加onClick=""到我的按钮?

我的动态操作将只是一个服务器端代码,比如UPDATE inv_tb_dashboard SET etat_dashboard = 0,而不是太棘手的东西。

如果您有任何想法可以引导我走上正确的道路,请不要犹豫。

如果您需要更多详细信息,可以问我更多问题。

谢谢,

托马斯

标签: javascriptoracleplsqloracle-apex

解决方案


如果您有预定义的操作,则创建一组操作,并根据您的条件向按钮添加操作,这可以使用 javascript 轻松完成示例:

const actions=['delete','update'];

let button=document.getElementByID('btn');

const queryExecutor=action=>{
//run action code

}

//Add Condition for Button
if(user=='admin'){
//add action to button dynamically
button.addEventListener('click',queryExecutor('delete'));
}
if(user=='user'){
//add action to button dynamically
button.addEventListener('click',queryExecutor('update'));
}

推荐阅读