java - How to show JRBeanCollectionDataSource data with help of Table component? -


i need show jrbeancollectiondatasource data in table component (jasperreports).

here template, showperson.jrxml file:

<?xml version="1.0" encoding="utf-8"?> <jasperreport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="showperson" pagewidth="612" pageheight="792" whennodatatype="nodatasection" columnwidth="555" leftmargin="20" rightmargin="20" topmargin="20" bottommargin="20" uuid="304c4c4e-c99a-4399-8081-748d3b7c0b8c">     <style name="table">         <box>             <pen linewidth="1.0" linecolor="#000000"/>         </box>     </style>     <style name="table_th" mode="opaque" backcolor="#f0f8ff">         <box>             <pen linewidth="0.5" linecolor="#000000"/>         </box>     </style>     <style name="table_ch" mode="opaque" backcolor="#bfe1ff">         <box>             <pen linewidth="0.5" linecolor="#000000"/>         </box>     </style>     <style name="table_td" mode="opaque" backcolor="#ffffff">         <box>             <pen linewidth="0.5" linecolor="#000000"/>         </box>     </style>     <subdataset name="table dataset 1" whenresourcemissingtype="empty" uuid="63b01547-bce2-47c9-ba15-666f94d11387">         <querystring language="sql">             <![cdata[]]>         </querystring>         <field name="name" class="java.lang.string"/>         <field name="age" class="java.lang.integer"/>     </subdataset>     <parameter name="info" class="java.lang.string"/>     <title>         <band height="40" splittype="stretch">             <statictext>                 <reportelement uuid="e96450a8-8358-4cae-a094-3add06d57de2" x="0" y="20" width="56" height="20"/>                 <textelement/>                 <text><![cdata[info]]></text>             </statictext>             <textfield>                 <reportelement uuid="e21e9932-ebfe-4bb5-904d-ea99e141866b" x="56" y="20" width="100" height="20"/>                 <textelement/>                 <textfieldexpression><![cdata[$p{info}]]></textfieldexpression>             </textfield>         </band>     </title>     <detail>         <band height="40" splittype="stretch">             <componentelement>                 <reportelement uuid="dea5d821-81b6-434b-ae27-4f3a0268e805" key="table 1" x="0" y="0" width="572" height="40"/>                 <jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemalocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd">                     <datasetrun subdataset="table dataset 1" uuid="39f8f0bf-8a2b-44f4-9a4c-0c873da79fba">                         <datasetparameter name="report_data_source">                             <datasetparameterexpression><![cdata[]]></datasetparameterexpression>                         </datasetparameter>                         <datasourceexpression><![cdata[$p{report_data_source}]]></datasourceexpression>                     </datasetrun>                     <jr:column width="169" uuid="aae649c4-6a69-485f-8a0d-87022df793ee">                         <jr:tableheader height="20" rowspan="1">                             <statictext>                                 <reportelement uuid="795dac43-0ff0-482c-89a0-7dac3b27d513" x="0" y="0" width="169" height="20"/>                                 <textelement/>                                 <text><![cdata[name]]></text>                             </statictext>                         </jr:tableheader>                         <jr:detailcell height="20" rowspan="1">                             <textfield>                                 <reportelement uuid="4f1ab13a-d776-4cd5-a2a7-a5cf23360816" x="0" y="0" width="169" height="20"/>                                 <textelement/>                                 <textfieldexpression><![cdata[$f{name}]]></textfieldexpression>                             </textfield>                         </jr:detailcell>                     </jr:column>                     <jr:column width="173" uuid="a6997eea-131e-4555-80e6-a20d4decb18f">                         <jr:tableheader height="20" rowspan="1">                             <statictext>                                 <reportelement uuid="5f6e2413-8025-47ca-9638-9609ea13f93f" x="0" y="0" width="173" height="20"/>                                 <textelement/>                                 <text><![cdata[age]]></text>                             </statictext>                         </jr:tableheader>                         <jr:detailcell height="20" rowspan="1">                             <textfield>                                 <reportelement uuid="195d51a0-9e45-4201-ad67-d3026ce2e72c" x="0" y="0" width="173" height="20"/>                                 <textelement/>                                 <textfieldexpression><![cdata[$f{age}]]></textfieldexpression>                             </textfield>                         </jr:detailcell>                     </jr:column>                 </jr:table>             </componentelement>         </band>     </detail> </jasperreport> 

my pojo:

public class person {      private string name;     private int age;      public string getname() {         return name;     }     public void setname(string name) {         this.name = name;     }     public int getage() {         return age;     }     public void setage(int age) {         this.age = age;     } } 

main class building report:

public class openreport {     public static void main(string[] args) throws jrexception {         map<string, object> peoplemap = new hashmap<>();         peoplemap.put("sisco", 17);         peoplemap.put("eve", 19);         peoplemap.put("john", 20);         peoplemap.put("george", 21);         peoplemap.put("steve", 18);          arraylist<person> datalist = new arraylist<person>();          for(map.entry<string, object> personmap : peoplemap.entryset()) {             person person = new person();             person.setname(personmap.getkey());             person.setage(integer.valueof(personmap.getvalue().tostring()));             datalist.add(person);         }          jrbeancollectiondatasource beancoldatasource = new jrbeancollectiondatasource(datalist);         map parameters = new hashmap();         parameters.put("info", "hello");          jasperreport report = (jasperreport) jrloader.loadobject("src/test/ireport/showperson.jasper");         jasperprint jasperprint = jasperfillmanager.fillreport(report, parameters, beancoldatasource);          jframe frame = new jframe("report");         frame.setdefaultcloseoperation(jframe.exit_on_close);         frame.getcontentpane().add(new jrviewer(jasperprint));         frame.pack();         frame.setvisible(true);     } } 

1.send datasource server parameter, , fill report different 1 (can empty).

jrbeancollectiondatasource beancoldatasource = new jrbeancollectiondatasource(datalist);         map parameters = new hashmap();         parameters.put("info", "hello");         parameters.put("ds1", beancoldatasource);          jasperreport report = (jasperreport) jrloader.loadobject("src/test/ireport/showperson.jasper");         jasperprint jasperprint = jasperfillmanager.fillreport(report, parameters, new jremptydatasource()); 

2.decalre new parameter in report of type jrbeancollectiondatasource

<parameter name="ds1" class="net.sf.jasperreports.engine.jrbeancollectiondatasource"/> 

3.set tabledatasource use $p{ds1} parameter.

<jr:table ...>     <datasetrun subdataset="table dataset 1">         <datasetparameter name="report_data_source">              <datasetparameterexpression><![cdata[$p{ds1}]]></datasetparameterexpression>         </datasetparameter>     </datasetrun> ..... 

4.declare fields (name, age) in table dataset 1.

5.in table, in detailband add textfield in each column corresponding field ($f{name} , $f{age} respectively).


Comments

Popular posts from this blog

get url and add instance to a model with prefilled foreign key :django admin -

android - Keyboard hides my half of edit-text and button below it even in scroll view -

css - Make div keyboard-scrollable in jQuery Mobile? -