Oracle APEX:如何根据表对比结果动态变更IG列按钮颜色
实现步骤
1. 修改交互式网格的数据源查询
替换原employees表的查询语句,通过WITH子句预先计算校验结果,确保每行的VALID_BUT列都能拿到正确的样式类名:
with validation_check as ( select case when count(*) = 0 then 'valid-green' else 'valid-red' end as valid_class from ( select emp_id, emp_name, emp_designation, emp_hier from employees minus select emp_id, emp_name, emp_designation, emp_hier from employee_admin ) ) select e.validated, e.emp_id, e.emp_name, e.emp_designation, e.emp_hier, vc.valid_class as VALID_BUT from employees e cross join validation_check vc;
这种方式只会执行一次MINUS查询,相比每行单独计算性能更优。
2. 确认隐藏列配置
确保VALID_BUT列在交互式网格的列属性中设置为隐藏,类型为文本。
3. 绑定链接列的样式类
打开Validated链接列的属性面板,检查Class属性是否设置为&VALID_BUT.(末尾的点是Oracle APEX引用列值的必要格式),这样链接按钮会自动应用VALID_BUT列返回的样式类。
4. 添加自定义CSS样式
在页面属性的CSS -> Inline区域,添加以下样式定义按钮的颜色:
.valid-green { background-color: #2ecc71; color: #fff; padding: 4px 8px; border-radius: 4px; text-decoration: none; } .valid-red { background-color: #e74c3c; color: #fff; padding: 4px 8px; border-radius: 4px; text-decoration: none; }
可根据需求调整颜色、内边距等样式细节。
可选:实时刷新校验状态
如果需要在用户修改数据后自动更新按钮颜色,可在交互式网格的刷新动作中添加触发条件(比如提交后刷新IG),确保VALID_BUT列的取值重新计算。
内容的提问来源于stack exchange,提问作者Velocity
相关产品推荐
相关产品推荐

