如何将变量值设置为BIRT中的特定单元格或元素

时间:2014-06-17 13:35:54

标签: birt

我在BIRT报告的beforeFactory中声明了变量。

例如:

BIRT Global declaration

我在表格行中递增的这个变量呈现如下:

table render

现在,当渲染所有行时,我想将上面的变量设置为特定的单元格/元素。我试过了

  

document.getElementName(" numberOfMobilityFilesProcessed")。text = numberOfMobilityFiles;

  

reportContext.getDesignHandle()。的getElementById

但他们不适合我。

2 个答案:

答案 0 :(得分:1)

我在数据源脚本的多个步骤中使用临时局部变量时遇到了一些问题,所以我总是使用全局持久化。

更改变量后,将其转换为String(因为只能保留字符串),再次编辑变量之前,从持久化上下文中加载String并将其转换为所需类型(String to Integer会自动转换)通过JavaScripts动态类型变量,但在保存时不要忘记toString(),否则会冒错误。)

因为您使用reportContext.setPersistentGlobalVariable,您的变量可以在报告的每个元素中访问。

示例:

var rowNum = reportContext.getPersistentGlobalVariable("row_number");
if(rowNum == null){
  rowNum = -1;
}
rowNum++;
reportContext.setPersistentGlobalVariable("row_number", rowNum.toString());

答案 1 :(得分:0)

好的,你有一个文本元素在表格元素中显示多个行。文本元素出现在报告中的表格之前。

如果您使用两个单独的任务RunTask和RenderTask:

在报告中添加报告变量(请参阅数据资源管理器视图中的"变量"节点)。然后,您可以在表行的onCreate()事件处理程序中更改报表变量:

vars["numberOfSomething"] = vars["numberOfSomething"] + 1;

并在某些文本元素的onRender()evenet处理程序中访问其值,例如DynamicText:

this.text = "Number of something: " + vars["numberOfSomething"];

如果您使用的是RunAndRenderTask,则必须寻找其他方法。在这种情况下,onCreate()和onRender()调用的顺序是不同的。您可以将相同的DataSet绑定到显示计数器的文本元素,作为绑定到表的文本元素。您可以将聚合绑定添加到将计算数据集中所有行的文本元素。