【问题标题】:Merge table row cells in Jasper Reports , using JRBeanCollectionDataSource?使用 JRBeanCollectionDataSource 合并 Jasper Reports 中的表格行单元格?
【发布时间】:2021-08-09 11:30:00
【问题描述】:

我需要将单元格与相关信息合并。我发现使用“printRepeatedValues = false”是不合适的。此表达式不会连接列,而是将它们留空。 在我看来,我需要 2 个数据集。第一个描述了相关信息的字符串,第二个描述了相关信息的细节。但是我仍然不明白如何将第二个数据集添加到现有表中以及如何告诉第二个数据集它引用了第一行第一个数据集,例如

这是我正在做的:填写报告来自Java,通过代码是这样的。

List<MyDataClass> datas = new ArrayList<>();
    MyDataClass data1 = new MyDataClass("AAA", "AAA details1", "AAA details2", "good", "AAA details3");
    MyDataClass data2 = new MyDataClass("AAA", "AAA details11", "AAA details22", "good", "AAA details33");
    MyDataClass data3 = new MyDataClass("CCC", "CCC details1", "CCC details2", "good", "CCC details3");
    datas.add(data1); datas.add(data2);datas.add(data3);
    JRBeanCollectionDataSource dataForReport = new JRBeanCollectionDataSource(datas);
    Map<String, Object> parametrs = new HashMap<String, Object>();
    parametrs.put("CollectionBeanParametr", dataForReport);

But result is blank rows.

Result which I need. 任何如何使用 JRBeanCollectionDataSource 的工作示例都可能会有所帮助。谢谢!

I have seen same question 试图弄清楚 anwer 是如何工作的

【问题讨论】:

    标签: java jasper-reports


    【解决方案1】:

    很难解释它是如何工作的,有人帮我弄清楚了我的问题。我理解的事情: 要像这里这样合并单元格,在 Java 代码中需要 2 个模型,第一个模型用于合并单元格,在这种情况下是相关 1 列和相关 2 列:

    public class Model {
    
    private String related1;
    private String related2;
    private List<DetailsDataObjects> detailsDataObjects;
    //getters | setters|Constructors}
    
    
      public class DetailsDataObjects {
    
    private String details1;
    private String details2;
    private String details3;
    //getters|setters| constructors
    }
    public static void main(String[] args){
    DetailsDataObjects detailsDataObject = new ReportDataObjects();
    detailsDataObject.setDetails1("AAA detais");
    detailsDataObject.setDetails2("AAA details2");
    detailsDataObject.setDetails3("AAA details3");
     List<DetailsDataObjects> detailsDataObjects = Arrays.asList(detailsDataObject, detailsDataObject , detailsDataObject ....);
     Model model1 = new Model();
            model1.setRelated1("AAA");
            model1.setRelated2("good");
            model1.setDetailsDataObjects(detailsDataObjects);
    List<Model> models = Arrays.asList(model1);
     JRBeanCollectionDataSource itemsJRBean = new JRBeanCollectionDataSource(models);
            params.put("ItemDataSource", itemsJRBean);
    ....
    }
    

    在 JasperStudio 需要创建带有 2 个数据集的 2 个表,第一个数据集说明:$P{ItemDataSource},第二个数据集说明:new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{detailsDataObjects})

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-14
      • 1970-01-01
      • 1970-01-01
      • 2018-03-21
      • 2020-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多