Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
EclipseBirt-使用事件处理程序动态设置样式单元格表_Eclipse_Report_Handler_Cell_Birt - Fatal编程技术网

EclipseBirt-使用事件处理程序动态设置样式单元格表

EclipseBirt-使用事件处理程序动态设置样式单元格表,eclipse,report,handler,cell,birt,Eclipse,Report,Handler,Cell,Birt,我在报表中有Birt表,我想创建一个处理程序类,如果单元格包含列的最大值,则该类可以动态更改表中单元格的样式颜色 我在第一步中尝试了这一点,并将类挂接到了表报表的行上 public class RowMinMax implements IRowEventHandler { public void onCreate(IRowInstance rowInstance, IReportContext reportContext) { double max=0;

我在报表中有Birt表,我想创建一个处理程序类,如果单元格包含列的最大值,则该类可以动态更改表中单元格的样式颜色

我在第一步中尝试了这一点,并将类挂接到了表报表的行上

public class RowMinMax implements IRowEventHandler
{

  public void onCreate(IRowInstance rowInstance, IReportContext reportContext)
  {
      double max=0;             
      IRowData rowData = rowInstance.getRowData();
      double cellValue = (double) rowData.getColumnValue("nameColumn");

      if(cellValue>max)
      {
         //change cell style
      }
  } ... //OTHER METHOD INTERFACE
}
我找不到合适的方法来查找对象单元格并设置样式(es.font color red)

我怎样才能解决这个问题


谢谢

为什么这么复杂?您可以通过rptdesign文件中的Javascript实现这一点。无需使用自定义Java类。 首先,您应该使用BIRT的聚合列计算最大值(我们称之为“maxValue”)——要么在数据集本身中,要么在表项定义中。 接下来,您可以在报告的初始化事件中定义如下函数:

function modifyStyle(cell, row) {
    if (row["nameColumn"] >= row["maxValue"]) {
        cell.getStyle().borderLeftWidth = "3px";
        cell.getStyle().borderRightWidth = "3px";
    }
} 
在单元格的onCreate事件中,调用函数:

modifyStyle(this, row);

你解决了这个问题吗?这也许对我也有帮助。