如何在JasperReport中解决这个问题?

时间:2010-04-07 06:28:26

标签: jasper-reports

我想在pdf文档中打印一个表格。我需要使用两个javabean数据源来填充表中的数据。所以我使用两个子报告并行地映射数据。我面临的问题是我无法组织第一个子报表对应的第二个子报表内容。也就是说,如果第一个子报表中任何字段的宽度很大,那么第二个报告将无法正确对齐第一个子报告。下面的示例将对问题进行一个很好的了解

我的预期输出

       SubReport1                     SubReport2

  S.No     Value                  S.No       Value

   1      value from first         1          value from second bean
          java bean value 
          bean   

   2      value from first bean    2          value from second bean

我得到的结果

      SubReport1                    SubReport2

   S.No     Value               S.No       Value

   1     value from first        1          value from second bean
         java bean value        2          value from second bean       
          bean   

   2      value from first bean 

请帮助我解决这个问题。

2 个答案:

答案 0 :(得分:1)

正如@Boris建议首先删除子报告。

由于您使用的是BeanDatasource,因此您可以将所有业务和逻辑放在代码中,并为报告提供现成的列表。

创建一个新对象,我们称之为ReportRow,当然不要使用该名称:)。

public class ReportRow{
    int sNumber1;
    int sNumber2:
    String value1:
    String value2:
    //setters and getters
}

现在创建一个新的ArrayList<ReportRow>并将其作为数据源传递。

HTH。

答案 1 :(得分:0)

子报表就像函数参数一样。它们在调用函数之前进行评估,并且彼此不了解。您的问题有两种解决方案:

  1. 删除子报表并渲染 主报告中的数据
  2. 追加一些 非打印字符 两个值中的较短值 应该在同一个渲染中呈现 行