如何基于CSS类和二进制数字开/关位置突出显示特定列值

时间:2017-07-26 02:31:16

标签: javascript jquery css oracle11g oracle-apex

使用Oracle APEX v5.1.2。

不确定如何解决以下问题,但我有一个名为 flag_defs 的表格,其中包含以下示例数据:

ID      NAME
------- ------
1       A
2       B
3       C
4       D
5       E
6       F

根据上表,我需要用报告区域显示所有这些名称,但不是在单独的行上,而是以下列方式:

A B C D
E F

我只在其中显示4个名字。

现在基于以下二进制约定,请说明以下内容:

010010

其中前0行直至ID = 1且该序列中的最后0行最多为ID = 6

基于这个二进制序列,它将存储在另一个表的数据库字段中,我需要应用一个名为" flag-red"的类。我将其定义为color:red; font-weight:bold;到ID位置设置为" 1"。

的名称

所以在上面的示例二进制序列中," B"和" E"只会收到" flag-red"并且在报告区域内将为红色/粗体。其他人不会。

如果数字" 1"删除课程也是如此。重置回" 0"该ID。

我需要遍历此字段中的每个数字,以在报告中设置正确的类。

我假设我首先创建一个报告并为每个名称分配一个span类,但不确定这是否是正确的方法。

此外,JavaScript是更好的选择还是坚持SQL

对如何解决上述问题表示感谢。

1 个答案:

答案 0 :(得分:0)

我建议您按以下方式进行报告:

假设您有一个查询,该查询返回一些rownum列的行。在此查询中添加一个数据透视表,我们可以将其转换为以下内容:

select *
  from (select r, mod(rownum, 6) group_no, floor((rownum - 1)/6) row_id
          from (select rownum r
          from dual connect by level <= 30) t)
 pivot(max(r) for group_no in (1, 2, 3, 4, 5, 0))
 order by 1

enter image description here

现在我们可以将这个查询与存储二进制掩码的表连接起来。假设初始查询包含带有数据的列C1C2,... C6,带有掩码数据的连接表包含列M1M2 ,. .. M6。 (如果它是带有掩码的一列,我们可以使用计算表达式生成6列)您可以在这些列中计算CSS类的名称,例如

select ...
       case when <expression1> then 'flag-red' else 'flad-green' end M1,
       ...

下一步是转到报告属性,在列列表中选择列C1,转到Column formatting部分,将#M1#放入CSS Classes field

enter image description here

另外,将M1M2,... M6列标记为隐藏。