根据 oracle apex 中的条件更改穿梭机的文本颜色

Change the text color of a shuttle based on a condition in oracle apex

我在 oracle apex 中有两个不同的 table,第一个是包含 KPI 的文档 table,第二个是包含所有 KPI 的结果 table结果。

我在页面中创建了一个快捷方式,用于从文档中选择 KPI table,然后将结果插入结果 table。我需要的是,如果文档 table 中显示的 KPI 在结果 table 中没有任何结果,它应该以红色显示。可以这样做吗?? 注意:tables之间join的主键和外键是kpicode

这是航天飞机的截图:

这里是 SQL 查询穿梭车以从文档 table:

中获取所有 KPI
select distinct kpi as k1, kpicode as k2
from documentation
where kpi is not null;

shuttle 项目不允许您提供 html 标签来设置 shuttle 中显示的选项的样式。 您可以编写自己的项目,也可以通过修改模板来实现您的要求,但我想提出一种使用 jQuery.

的非常简单的方法

由于您没有提供示例数据,我正在使用视图 user_tables 并将尝试用红色突出显示名称中包含 DEMO 的所有 table , 一旦他们被移动到班车的右侧。

对于我的示例,穿梭机的来源必须为需要突出显示的元素提供一些标记。如果 table 名称包含 DEMO,我会在前面添加 [red]:

select
    case when table_name like '%DEMO%' then '[red]' end || 
    table_name as d,
table_name as r
from user_tables
order by table_name

现在,航天飞机看起来像这样:

现在,将一个简短的 jQuery 片段添加到页面属性的 Execute when Page Loads 部分:

$('option:contains("[red]")').addClass("red").each(function() {
    $(this).html($(this).html().replace("[red]",""));
});

这会将 CSS class red 添加到匹配的元素并删除文本 [red].

作为最后一步,使用内联 CSS 实际应用样式:

.shuttle_right .red { color: red; font-weight: bold }

过滤器.shuttle_right将使红色仅出现在右侧。如果你想让它出现在两边,你可以简单地省略它。

现在,航天飞机看起来像这样: