2015-12-14 94 views
1

我想知道是否可以將增長(表格)元素動態地定位到頁面底部?我的表格元素位於頁腳頁面上方的細節區域。Jasper報告:頁面底部的定位元素

基本上在我的情況下,表的最上面一行的位置將根據表中的行數總是動態地改變。但我不確定是否可以用Jasper創建這種表示,其中表格從底部到頂部基本上「增長」,其中表格的最後一行基本上固定在頁面的底部,頁腳。如果桌面最上面一排的位置總是固定的,桌面將從固定的頂部位置向頁面底部「正常地增長」,那麼就沒有問題了......

我試着設置表格的位置類型屬性以相對於底部進行修復,但在此之後整個桌子完全消失。這是我迄今爲止解決我的問題所能想到的唯一一件事。

+0

你是在詳細信息表?,它需要在細節帶? (你有多個表嗎?)。解決方案是不同的,這取決於這個... –

+0

是的,我的桌子(和表格上面的2個文本框)是在詳細的樂隊。我在這個頁面上只有一個表格。在包含表格的這個細節帶上方還有另一個細節帶,但它不包含表格,只是文本字段。我想我的桌子也可以放在其他樂隊中,但我不知道如何重構它到另一個樂隊會幫助我將表格的最後一行固定在頁面底部(正好在頁面頁腳上方)。但也許有一個解決方案.... – Vka

+0

我發佈了一個...試試看... –

回答

3

可能實現這一目標的最簡單的方法就是把你的表在<groupFooter>footerPosition="StackAtBottom"

的正確方法組取決於你的數據源,但讓假設你只有一個表中創建一個虛擬組。

虛擬組的例子與頁的表StackAtBottom

<?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="Example2" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="ca579c38-1e4f-4993-a020-efcea9d1096e"> 
<style name="table"><box><pen lineWidth="1.0" lineColor="#000000"/></box></style> 
<style name="table_TD" mode="Opaque" backcolor="#FFFFFF"><box><pen lineWidth="0.5" lineColor="#000000"/></box></style> 
<subDataset name="Table" uuid="982be61b-ae46-4404-a9a0-30ba13e8c414"> 
    <queryString language="xPath"> 
     <![CDATA[/report/table/entry]]> 
    </queryString> 
    <field name="name" class="java.lang.String"> 
     <fieldDescription><![CDATA[name]]></fieldDescription> 
    </field> 
    <field name="class" class="java.lang.String"> 
     <fieldDescription><![CDATA[class]]></fieldDescription> 
    </field> 
</subDataset> 
<queryString language="xPath"> 
    <![CDATA[/report]]> 
</queryString> 
<group name="dummy" footerPosition="StackAtBottom"> 
    <groupFooter> 
     <band height="29"> 
      <componentElement> 
       <reportElement key="table" style="table" x="0" y="0" width="360" height="20" uuid="53ea5a0e-1218-4150-ab5a-5f947e73b284"/> 
       <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" uuid="64092841-9993-4ccd-89b4-84a546c719cf"> 
         <dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JRXmlDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("report/table/entry")]]></dataSourceExpression> 
        </datasetRun> 
        <jr:column width="90" uuid="4f5b1813-a9cc-4f83-9bdb-b0d8c4299133"> 
         <jr:detailCell style="table_TD" height="20"> 
          <textField> 
           <reportElement x="0" y="0" width="90" height="20" uuid="f1a97e19-e23d-40b6-ad95-10614f516db7"/> 
           <textFieldExpression><![CDATA[$F{class}]]></textFieldExpression> 
          </textField> 
         </jr:detailCell> 
        </jr:column> 
        <jr:column width="90" uuid="98cfbe63-f865-419c-ad8f-d8af2ed706ba"> 
         <jr:detailCell style="table_TD" height="20"> 
          <textField> 
           <reportElement x="0" y="0" width="90" height="20" uuid="0480f047-02ba-4ec4-b12a-ef56a3cbfee9"/> 
           <textFieldExpression><![CDATA[$F{name}]]></textFieldExpression> 
          </textField> 
         </jr:detailCell> 
        </jr:column> 
       </jr:table> 
      </componentElement> 
     </band> 
    </groupFooter> 
</group> 
<detail> 
    <band height="17" splitType="Stretch"/> 
</detail> 
</jasperReport> 

結果

Result

+0

我試過上面的例子,但它似乎是jrxml線與我的樂隊不兼容:賈斯珀工作室指示行作爲erroneus,如果我嘗試保存修改後的jrxml,它會自動拋出我的添加。基本上我只是在我的第二個細節帶周圍添加了以下幾行: 。 。 。 。 。 。 。 我的數據源是一串豆子。 – Vka

+0

這個羣組在你的主要報告中的queryString之後...在你所有的細節帶之前..我已經編輯了答案,以便你可以看到羣組帶... –

+0

謝謝,我會嘗試。出於好奇,賈斯珀如何理解將這個羣體完全定義在實際細節帶之外的細節帶中,因爲我有許多(兩個)細節帶。從上面的代碼我沒有看到頂部的組定義和正確的細節帶之間的鏈接... – Vka