我从我的数据控件中生成了一个 ADF 表。 但我需要更改支持 bean 中每个单元格的样式。 我在google上确实找不到任何有用的信息,希望您能给我提供一些有用的信息。
最佳答案
能说得具体一点吗?哪个 jdev 版本?如果您需要更改每个单元格为什么不使用皮肤?
根据评论,我们现在知道您使用 jdev 11.1.2.2.0。 您可以做的是将表的 styleClass 属性绑定(bind)到支持 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} 这将为该列的每个单元格调用该方法。
关于java - 如何以编程方式更改 ADF 表格中的样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11500371/