根据列比较的 APEX 突出显示行

Posted

技术标签:

【中文标题】根据列比较的 APEX 突出显示行【英文标题】:APEX hightlight row according to column comparison 【发布时间】:2012-08-06 10:57:22 【问题描述】:

我在 APEX 中有一份报告,其中显示了两个表的 JOIN。两个表都有一个值,例如电话号码。如果两个电话号码不匹配,我希望该行被突出显示。

我查看了 Actions>Format>Highlight 中的突出显示选项,但似乎我只能将列值与特定值进行比较,而不能与另一列进行比较。

我对 APEX 很陌生,所以我可能会遗漏一些明显的东西!我已经阅读了其他问题和答案,但他们似乎正在处理更复杂的事情。他们谈到制作一个不可见的列并改变它的值,但我不确定我会怎么做。

感谢您的帮助!

【问题讨论】:

正如我在第二段中提到的,我不知道如何比较 2 行,只有 1 行与设定值进行比较。 【参考方案1】:

您无法在 ir 突出显示中比较每行的另一列。因此,要么通过查询要格式化的列输出 html,要么使用 javascript/动态操作。

Sql:

SELECT CASE WHEN a.phone = b.phone THEN htf.escape_sc(a.phone) 
            ELSE '<div class="highlight">'||htf.escape_sc(a.phone)||'</div>'
       END AS phone_highlight
FROM a, b
WHERE a.id = b.id

(输出 html 时转义特殊字符!) 另外,将列设置为“标准报告列”,这样它将呈现 html 而不会转义。

就个人而言,我会选择 javascript: 动态动作,刷新后,执行javascript,勾选“fire on page load”:

$("td[headers='TELEPHONE1']").each(function()
   var lTest = $(this).siblings("[headers='TELEPHONE2']").text();
   if($(this).text()!= lTest)
      $(this).addClass("highlight");
   ;
);

这会将高亮类添加到同一行中与 phone2 不同的电话 1 的单元格。

在这两种情况下,我都在上课,所以你也必须提供。 (当然,您可以在 js 中使用 .css(),但我喜欢将样式与功能分开) 例如头部的样式标签:

<style type="text/css">
.highlight
   background-color: yellow;
   color: purple;

</style>

这允许无污染的 sql、没有样式的 javascript 和 css 中的样式。

【讨论】:

感谢您的精彩帖子,以后肯定对我有用。不过目前格伦的回答对于我的情况来说是最简单的。【参考方案2】:

在您的查询中创建一个伪列来标记感兴趣的记录。然后对比flag:

SELECT a.phone, b.phone
      ,CASE WHEN a.phone = b.phone THEN 1 ELSE 0 END AS match
  FROM a, b
  WHERE a.id = b.id

【讨论】:

【参考方案3】:

我在搜索中偶然发现了这个解决方案,首先感谢您花时间在这个答案中。我一直跟着你到:

“在这两种情况下,我都使用了一个类,所以你也必须提供它。(当然,你可以在 js 中使用 .css(),但我喜欢将样式与功能分开)例如样式标签在头:

<style type="text/css">
.highlight
 background-color: yellow;
 color: purple;
 
 </style>"

您会在 Apex 的什么地方“提供”这个?再次感谢,

【讨论】:

以上是关于根据列比较的 APEX 突出显示行的主要内容,如果未能解决你的问题,请参考以下文章

永久突出显示交互式报告上的行 APEX

jQuery Datatables 突出显示行

具有行突出显示和复选框列的 rhandsontable

根据列标题和日期格式突出显示单元格

在不使用 VBA 的情况下突出显示 Excel 中的活动行/列?

突出显示 JTable 的列标题