2010-04-27 17 views
6

Tôi muốn sử dụng thành phần bảng mới được thêm vào JasperReports 3.7.2 với plugin jasper grails. Tôi thấy thành phần mới này hữu ích để tạo bảng.Làm thế nào để sử dụng thành phần bảng được thêm vào JasperReports 3.7.2 với plugin jasper grails?

Tôi đã xác định Tập dữ liệu bảng 1 và một số trường (ví dụ: $ F {name}), vấn đề, tất cả giá trị trường của tôi là rỗng. Tôi cũng đã xác định các trường (không kèm theo bảng), và tôi nhận được các giá trị.

Đây là mã bàn của tôi:

<subDataset name="Table Dataset 1"> 
    <field name="name" class="java.lang.String"/> 
    <field name="signal" class="java.lang.Double"/> 
    ... 
</subDataset> 

<componentElement> 
<reportElement key="table" style="table" x="0" y="0" width="802" height="50"/> 
<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"> 
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.JREmptyDataSource(1)]]></dataSourceExpression> 
</datasetRun> 
<jr:column width="90"> 
<jr:columnHeader style="table_CH" height="30" rowSpan="1"> 
<staticText> 
<reportElement x="0" y="0" width="90" height="30"/> 
<textElement/> 
<text><![CDATA[Name]]></text> 
</staticText> 
</jr:columnHeader> 
<jr:detailCell style="table_TD" height="20" rowSpan="1"> 
<textField> 
<reportElement x="0" y="0" width="90" height="20"/> 
<textElement/> 
<textFieldExpression class="java.lang.String"><![CDATA[$F{name}]]></textFieldExpression> 
</textField> 
</jr:detailCell> 
</jr:column> 
    ... 

tôi đoán, vấn đề của tôi là do phần này (Tôi đang sử dụng JREmptyDataSource):

<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.JREmptyDataSource(1)]]></dataSourceExpression> 

Nhưng làm thế nào tôi có thể nhận tôi <MODEL_DATA> với Thành phần bảng?
(ví dụ: chuỗi giá trị (điều khiển: 'jasper', hành động: 'index', mô hình: [data: <MODEL_DATA>], params: params))

Trả lời

5

Dưới đây là giải pháp:

Giữ:

<subDataset name="Table Dataset 1"> 
    <field name="name" class="java.lang.String"/> 
    <field name="signal" class="java.lang.Double"/> 
    ... 
</subDataset> 

và sử dụng:

<dataSourceExpression><![CDATA[$P{REPORT_DATA_SOURCE}]]></dataSourceExpression> 

Bảng thành phần bây giờ sẽ sử dụng nguồn dữ liệu thực tế của bạn (MODEL_DATA của bạn)!

+2

Nếu bạn muốn sử dụng tập dữ liệu thứ hai thì sao? – monksy

1

Câu trả lời trên hoạt động tốt cho các biểu thức SQL, nhưng nếu bạn đang sử dụng nguồn dữ liệu XML, truy vấn xPath cũng phải được bao gồm, giống như với tập dữ liệu chính.

<subDataset name="Tickets"> 
    <field name="barcode" class="java.lang.String"> 
     <fieldDescription><![CDATA[barcode]]></fieldDescription> 
    </field> 
</subDataset> 
+0

Tôi vừa thử sử dụng nó với nguồn dữ liệu XML, và theo những gì @ fabien-barbier đã nói, tôi chỉ nhận được một hàng trong bảng, và nó là cái cuối cùng. Tôi không hoàn toàn chắc chắn rằng tôi hiểu ví dụ của bạn để bao gồm truy vấn XPath, bạn có thể vui lòng cụ thể hơn ...? – Less

Các vấn đề liên quan