Java 使用脚本化数据源创建自由格式BIRT报告

Java 使用脚本化数据源创建自由格式BIRT报告,java,birt,Java,Birt,我正在尝试创建一个自由形式的BIRT报告。报告不包括每行中具有相同列名的行 相反,它是一个自由格式的报告,其格式如下 "Name: {FirstName} {LastName} Addess : {Address} Phone# {Phone#} .... .... " 我使用的是一个脚本数据源,它基本上返回包含{FirstName、LastName、Address、Phone和其他字段}的名称-值对的映射 但我不知道如何设置变量,以及如何获得FirstName、LastN

我正在尝试创建一个自由形式的BIRT报告。报告不包括每行中具有相同列名的行

相反,它是一个自由格式的报告,其格式如下

"Name: {FirstName} {LastName}         Addess : {Address}
 Phone#  {Phone#}
....
....
"
我使用的是一个脚本数据源,它基本上返回包含{FirstName、LastName、Address、Phone和其他字段}的名称-值对的映射

但我不知道如何设置变量,以及如何获得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);
    }
打开:
util=new Packages.test.ReportsUtil();
reportsVO=util.getReportVO(“ABC”);
在获取中:
如果(currentrow
但是我不知道如何在主布局页面中访问FirstName和LastName


谢谢

脚本化数据源的目标是允许您利用数据模型中固有的逻辑,并从操作该数据的任何业务规则中获益。最后,它仍然希望将数据形成一个相当传统的基于行的集合

您提到了动态文本,我认为这将是基于Java的事件处理程序的一个很好的用途。您可以使用绑定到脚本数据源的Java对象中的逻辑来代替绑定到报表生命周期中的事件,并以这种方式获取非关系数据

您甚至可以使用JS“Packages”构造直接从JavaScript事件处理程序(更容易通过IDE插入)调用Java对象

有很多例子可以帮助您在BIRT交换中完成这项工作。

我做了类似的事情(BIRT 3.7),但我使用了row[“colName”]而不是dataSetRow[“colName”],这似乎很有效。我将数据放在一个列表中,然后每个列表项都是一个网格。我将列表中的数据绑定设置为数据集。网格可以看到行[“colName”]中的值