2

我从我的数据控件中生成了一个 ADF 表。但是我需要改变我的 backing bean 中每个单元格的样式。我在谷歌上找不到任何有用的东西,希望你能给我一些有用的信息。

4

3 回答 3

2

你能更具体一点吗?哪个jdev版本?如果您需要更改每个单元格,为什么不使用皮肤?

根据评论,我们现在知道您使用的是 jdev 11.1.2.2.0。您可以做的是将表的 styleClass 属性绑定到支持 bean 属性。bean 中的属性有一个getter 和一个setter 方法。在 setter 方法中,您可以从行中获取所需的所有值并进行计算。根据结果​​,您返回适合单元格的样式类的名称。您在应用程序的皮肤中定义的不同样式类。例如,如果您在您的皮肤中定义以下样式类

.high_value { background-color:green; }
.negative_value { background-color:red;}

并在请求范围内的 bean 中,您可以从表所在的页面访问它

    private String styleForCell;

public String getStyleForCell()
{
    // get the value of the cell
    FacesContext lContext = FacesContext.getCurrentInstance();
    ELContext lELContext = lContext.getELContext();
    ExpressionFactory lExpressionFactory = lContext.getApplication().getExpressionFactory();
    Number val;
    val = (Number) lExpressionFactory.createValueExpression(lELContext, "#{row.valargument}", Object.class).getValue(lELContext);
    if (val == null)
        return "";

    // do the calculation and return the suitable style class
    int ival = val.intValue();
    if (ival >= 100000 )
        return "high_value";
    else if (ival < 0)
        return "negative_value";
    else 
        return "";         
}

public void setStyleForCell(String aStyleForCell)
{
    this.styleForCell = aStyleForCell;
}

现在您可以从表格列 styleClass 属性中访问计算的样式类 #{beanname.styleForCell} 这将为列的每个单元格调用该方法。

于 2012-07-16T17:01:30.780 回答
2

在字段的 inlineStyle 中使用条件 EL 根据值设置样式。#{binding.value > 1000 之类的东西?“字体=粗体”:“字体=常规”}

于 2012-07-18T22:31:47.063 回答
0

对上一个答案+1。请注意,更改单元格颜色的方式很大程度上取决于用例。如果您的用例需要动态的临时颜色编码,那么答案会有所不同,就像要求更改颜色编码以实施企业品牌一样

坦率

于 2012-07-17T06:22:39.390 回答