如何以编程方式更改ADF表中的样式

问题描述 投票:2回答:3

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

java jdeveloper
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中,您可以从该页面所在的页面访问该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}这将为列的每个单元调用该方法。


2
投票

在字段内联样式中使用条件EL可根据值设置样式。像#{binding.value> 1000这样的东西? 'font = bold':'font = regular'}


0
投票

上一个答案+1。请注意,更改单元格着色的方式取决于用例。如果您的用例需要动态ad-hoc颜色编码,那么答案就会有所不同,就像要求改变颜色编码以实现企业品牌一样

坦率

© www.soinside.com 2019 - 2024. All rights reserved.