【问题标题】:Jasper reports data filteringJasper 报告数据过滤
【发布时间】:2011-09-29 14:18:35
【问题描述】:

我正在处理 jasper 报告,通过 JRMapCollectionDataSource 提供数据。具体来说,每一行都是这样的:

{"id"->"21552", "name"->"", "date"->"22.03.2013"}

现在我只需要在报告中包含 id 大于 10 的记录。我该怎么办?

我发现了filterexpression 标签,但它只适用于子数据集。那么,如何将其应用于主数据集?

当我尝试将filterexpression 放入jasperReport 标记时,iReports 失败并出现错误: 非常感谢您的回复,我已经尝试过这样做。我报告给我

异常:org.xml.sax.SAXParseException:cvc-complex-type.2.4.a:发现以元素“属性”开头的无效内容。 '{"http://jasperreports.sourceforge.net/jasperreports":group, "http://jasperreports.sourceforge.net/jasperreports":background, "http://jasperreports.sourceforge.net/jasperreports":title, "http://jasperreports.sourceforge.net/jasperreports":pageHeader, "http://jasperreports.sourceforge.net/jasperreports":columnHeader, "http://jasperreports.sourceforge.net/jasperreports" 之一:详细信息,“http://jasperreports.sourceforge.net/jasperreports”:columnFooter,“http://jasperreports.sourceforge.net/jasperreports”:pageFooter,“http://jasperreports.sourceforge.net/jasperreports”:lastPageFooter,“http://jasperreports.sourceforge.net/jasperreports”:summary,“http://jasperreports.sourceforge.net/jasperreports”:noData}'。

【问题讨论】:

    标签: jasper-reports


    【解决方案1】:

    过滤器表达式不限于子数据集。只需将filterExpression 标签放在jasperReport 标签内,它就会应用于主数据集。

    位置很重要,看来。过滤器表达式必须在任何内容之前,但在声明字段之后。

    【讨论】:

    • 非常感谢您的回复。我试过这样做,但 iReports 在这种情况下给出了异常,我用异常消息更新了我的答案。
    • 有趣。您曾经可以在主报告中使用过滤器表达式,但似乎在更新版本的 jasperreports 中已删除此功能
    • 忽略我之前的评论。如果我错误地放置标签,我会得到同样的异常。它必须在任何内容(pageHeader、detail 等)之前,但在任何字段之后。我不确定是否有任何其他标签会影响它。尝试使用该展示位置来寻找可行的方法。
    • 非常感谢,GenericJon!有效!我没有尝试在字段声明之后放置它。似乎是合乎逻辑的,应该在搜索条件之前定义字段,但不要太直截了当 =) 再次感谢。