0

有没有办法在 Jasper 报告中将 textFields 动态添加到 columnFooter。

我有可能不得不使用的情况:

  <columnFooter>
      <band height="21" splitType="Stretch">
        <textField isStretchWithOverflow="true">
            <reportElement x="0" y="0" width="50" height="21"/>
            <textElement textAlignment="Center" verticalAlignment="Middle"/>
            <textFieldExpression><![CDATA["Example text...."]]></textFieldExpression>
        </textField>
      </band>

或者

      <columnFooter>
      <band height="42" splitType="Stretch">
        <textField isStretchWithOverflow="true">
            <reportElement x="0" y="0" width="50" height="21"/>
            <textElement textAlignment="Center" verticalAlignment="Middle"/>
            <textFieldExpression><![CDATA["Example text...."]]></textFieldExpression>
        </textField>            <textField isStretchWithOverflow="true">
            <reportElement x="0" y="0" width="50" height="21"/>
            <textElement textAlignment="Center" verticalAlignment="Middle"/>
            <textFieldExpression><![CDATA["More example text...."]]></textFieldExpression>
        </textField>
      </band>

(或添加任意数量的文本字段。由于我不知道将添加多少,我需要以某种方式动态调整乐队的大小)我正在寻找一种在 Java 中动态执行此操作而不必在 jrxml 中对其进行硬编码的方法文件。谢谢

4

3 回答 3

0

使用第二种方法在 textFields 上设置 PrintWhenExpression 并在此 textFields 的属性上设置“空白时删除行”复选框。

于 2013-03-29T07:54:39.867 回答
0

如果您的报告是作为 JRDesign 动态创建的,您可以使用以下内容:

JRDesignBand band = (JRDesignBand) jasperDesign.getColumnFooter();
        JRDesignTextField textField = new JRDesignTextField();
        textField.setX(0);
        textField.setY(0);
        band.addElement(textField);
于 2013-10-24T11:25:39.067 回答
0

很抱歉,在使用 JR Java API 多年之后,我感觉它是为在文档的固定布局上打印而设计的。对您的情况有什么帮助:如果您知道可能出现的最大字段数,只需将它们全部添加到乐队中,并将“空白时删除行”标志设置为 true。它将折叠未使用的字段。

于 2016-12-16T16:37:11.677 回答