Birt - 如何在oncrecreate上操纵行单元格

时间:2013-04-13 07:04:11

标签: javascript birt

我是Birt脚本的新手,需要一些脚本的帮助。 我想合并行创建表格行中的单元格,如果它们包含相同的数据。 例如这个表

 ------- ------- -------
|  id1  |   2   |   4   |
 ------- ------- -------
|  id2  |   5   |   5   |
 ------- ------- -------

应该看起来像

 ------- ------- -------
|  id1  |   2   |   4   |
 ------- ------- -------
|  id2  |       5       |
 ------- ------- -------

我找到了一些例子,现在我可以根据onrowcreate的行数据改变行背景:

if (this.getRowData().getExpressionValue(1) == "id1")
this.getStyle().backgroundColor = "red";

if (this.getRowData().getExpressionValue(1) == "id2")
this.getStyle().backgroundColor = "blue"; 

另一个例子展示了如何在表头之前合并单元格中的单元格:

importPackage( Packages.org.eclipse.birt.report.model.api );
elementFactory = reportContext.getDesignHandle().getElementFactory();
var mytable = reportContext.getDesignHandle().findElement("mytable");
var myheader = mytable.getHeader( ).get( 0 );
tcell = myheader.getCells( ).get( 1 ).drop();
tcell = myheader.getCells( ).get( 0 );
tcell.setColumnSpan(2);
tcell.setRowSpan(1);

两个示例都运行正常,但我需要在合并它们之前检查单元格中是否有相同的数据,我可以执行类似于beforeFactory脚本onrowcreate的操作,或者可能有不同的方法。

谢谢!

1 个答案:

答案 0 :(得分:2)

创建表后,无法合并单元格,因此需要在beforeFactory事件中完成,这对您不起作用,因为它在查看数据集之前运行。

根据表的复杂程度,创建2个详细信息行可能是有意义的,其中一个包含合并列,另一个没有。然后,您可以根据行中的数据动态隐藏您不想使用的详细信息行。