2014-11-04 95 views
0
  • 甲骨文= 11G
  • 的Apex = 4.2.6

我的Oracle APEX中一个非常大的自定义的矩阵格栅。 这将显示月份的名称,地区和日期编号(即1,2,3)作为标题。添加基于价值CSS/JQuery的条件格式的Oracle APEX形式

随着行数的减少350.在每个单元中是一个任务类型。所以每个员工每天都有一项任务。

这显示在交互式报告中。

我现在需要做的是强调根据任务类型特定细胞..

因此,例如背景细胞会红生病,绿色周末等。

我可以使用额外的列

for case when "MD_TS_DETAIL"."JOB_TYPE_ID"= 20 then '#b0c4de' 
     when "MD_TS_DETAIL"."JOB_TYPE_ID" = 115 then '#000000' 
    end text_color_1, 

case when "MD_TS_DETAIL"."JOB_TYPE_ID"= 20 then 'blue' 
     when "MD_TS_DETAIL"."JOB_TYPE_ID" = 115 then 'red' 
    end back_color_1 

然后在列属性调用。但要做到这一点,我需要做到这一点,达到31次,而不是很有活力。

或者可以使用动作选择器内的高光,但是这也需要对每个单词和每种颜色使用1个过滤器。这再次不是一个好的解决方案。

所以可以根据一个值动态地调用CSS或jQuery。

因为我不认为这是可能的

回答

0

编辑:这可能不是一个很好的答案给予你矩阵的大小,因为它会导致额外的200kB或更多的不必要的数据传输。客户端在这里是正确的方法。

您可以将逻辑放在您的报表查询中。假设你已经使用class_name1class_name2等来设置你的CSS,这样的事情可能会做到这一点。请记住将列显示类型设置为“标准报告列”,以便解释HTML。

select '<div class="'|| 
     case MD_TS_DETAIL.JOB_TYPE_ID 
     when 20 then 'class_name1' 
     when 115 then 'class_name2' 
     -- etc 
     end||'">'||YOUR_COLUMN||'</div>' 
... 
0

使用CSS和jQuery的解决方案。 正如你所说,你需要一个客户端解决方案。我希望使用动态操作,以便从客户端获取资源。

请按照以下步骤操作。

  1. 创建动态操作(组件视图 - >动态操作 - >按+按钮)。请对动态操作的属性进行一些更改。 (事件 - 页面加载,客户端和服务器端条件没有条件)。
  2. 展开新添加的动态行为(让我们假设名称为AddClass),你可以找到两个文件夹/下就是行动,。在操作中添加名为show的新操作。
  3. 进行一些更改下真外加的动作(选择类型 - JavaScript表达式,在JavaScript表达式粘贴下面的代码。)

$(document).ready(function() { 
 
    $("td:nth-child(6)").each(function() { 
 
     if ($(this).text() === "sick") { 
 
      $(this).parent().children().css({'background-color': 'red'}); 
 
     } 
 
     else if($(this).text() === "weekend"){ 
 
      $(this).parent().children().css({'background-color': 'green'}); 
 
     } 
 
    }); 
 
});

备注:

  1. 这代表TD:第n个孩子(6),在列所呈现表中的6可用病态/周末数据。 (更改数字6到3,第3列提供的数据)

  2. 上面的代码将突出整行,如果你需要的是只更新特定列使用下面的代码。

$(document).ready(function() { 
 
    $("td:nth-child(6)").each(function() { 
 
     if ($(this).text() === "sick") { 
 
      $(this).css({'background-color': 'red'}); 
 
     } 
 
     else if($(this).text() === "weekend"){ 
 
      $(this).css({'background-color': 'green'}); 
 
     } 
 
    }); 
 
});