Oracle APEX:为表格形式的列中的值着色

时间:2016-01-18 08:17:05

标签: javascript css oracle oracle11g oracle-apex

我有一个tabular form,我希望以不同的颜色显示列delta的值。 Delta是column1和column2 之间的差异,我正在动态生成。

如果delta值为>0,颜色没有变化,如果delta为<0,则值应为红色,如果值为0则为绿色。

我正在使用oracle APEX VERSION:4.2.1

1 个答案:

答案 0 :(得分:1)

前段时间我遇到了类似的问题,我所做的是:

首先声明一个css类

.cellColored{background-color:#ff0000 !important} 

/*notice the !important attribute, if not declared the browser will use the apex css definition*/

然后转到表格形式定义 - &gt;区域定义 - &gt;属性 在静态ID add和id中,如下所示:

tab_form_id

然后转到表格形式定义中的报告属性,并在字段&#39;元素属性&#39;中编辑要绘制的列。添加:class='classDelta'

然后运行一个javascript函数将cellColored类设置为符合条件的表格单元格,如下所示:

function paintCells(){
    var tabForm = document.getElementById('tab_form_id');
    var cells = tabForm.getElementsByTagName('td');
    for(var i = 0; i < cells.length; i++){  
        if((cells[i].headers === 'DELTA') && (Number(cells[i].getElementsByClassName('classDelta')[0].value) < 0)){
                            cells[i].className = cells[i].className + ' cellColored';
        }
    }
}

注意cells[i].headers === 'DELTA'行,这应该是报告中定义的列的名称。

修改

以上是输入类型元素,对于只读列,您需要使用此函数:

function paintCells(){
    var tabForm = document.getElementById('tab_form_id');
    var cells = tabForm.getElementsByTagName('td');
    for(var i = 0; i < cells.length; i++){  
        if((cells[i].headers === 'DELTA') && (Number(cells[i].innerHTML) < 0)){
                            cells[i].className = cells[i].className + ' cellColored';
        }
    }
}