我正在尝试创建一个免费的BIRT报告。该报告不包含在每行中具有相同columnNames的行中。
相反,它是一个自由形式的报告,它将具有以下形式。
"Name: {FirstName} {LastName} Addess : {Address}
Phone# {Phone#}
....
....
"
我正在使用脚本化数据源,它实质上返回包含{FirstName,LastName,Address,Phone和其他字段}的名称值对的Map。
但我不知道如何设置变量以及如何获取FirstName,LastName等。 我应该尝试使用动态文本。
我不知道BIRT可以处理非行相关数据的任何方式。
这是我打开的数据集脚本。
open:
util = new Packages.test.ReportsUtil();
reportsVO = util.getReportVO("ABC");
in fetch:
if(currentrow < totalrows) {
dataSetRow["FirstName"] = reportsVO.getPropValue("identity.FirstName");
dataSetRow["LastName"] = reportsVO.getPropValue("identity.LastName");
currentrow++;
} else {
return (false);
}
但我不知道如何在主布局页面中访问FirstName和LastName。
谢谢
答案 0 :(得分:0)
脚本化数据源的目标是允许您利用数据模型中固有的逻辑,并从操纵该数据的任何业务规则中受益。最后,它仍然希望将数据形成一个相当传统的基于行的集合。
您提到了动态文本,我认为这对基于Java的事件处理程序非常有用。您可以使用绑定到脚本数据源的Java对象中的逻辑,而不是绑定到报表生命周期中的事件,并以此方式获取非关系数据。
您甚至可以使用JS“Packages”构造直接从JavaScript事件处理程序调用Java对象(通过IDE更容易插入)。
有许多例子可以帮助您在BIRT Exchange完成这项工作。
答案 1 :(得分:0)
我做了类似的事情(BIRT 3.7),但我使用了行[“colName”]而不是dataSetRow [“colName”],这似乎有效。我将数据放在列表中,然后每个列表项都是一个网格。我将列表中的数据绑定设置为数据集。网格能够将值视为row [“colName”]。