我在BIRT报告的beforeFactory
中声明了变量。
例如:
我在表格行中递增的这个变量呈现如下:
现在,当渲染所有行时,我想将上面的变量设置为特定的单元格/元素。我试过了
document.getElementName(" numberOfMobilityFilesProcessed")。text = numberOfMobilityFiles;
和
reportContext.getDesignHandle()。的getElementById
但他们不适合我。
答案 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绑定到显示计数器的文本元素,作为绑定到表的文本元素。您可以将聚合绑定添加到将计算数据集中所有行的文本元素。