如何使用Grails中的Dynamic-jasper插件限制报表?

时间:2011-11-04 06:08:15

标签: grails groovy grails-controller dynamic-jasper

我是grails的新手。我需要以pdf或任何其他格式生成报告。我使用了动态jasper插件来获取pdf格式的输出。我使用示例http://www.grails.org/plugin/dynamic-jasper生成了我的报告。

但是在那个例子中,报告显示了数据库中的所有值。所以我不想要报告中的所有值。而不是我需要限制报告。 I.e当我搜索值(通过一些sql查询)时,我将在列表中获得搜索值的o / p。所以我需要搜索值列表的报告。所以请指导我解决这个问题

1 个答案:

答案 0 :(得分:0)

听起来你需要使用dataSource属性:

  

dataSource:这是一个获取会话和params传递的闭包。如果您需要更复杂的查询来检索数据(例如,基于请求参数或会话中记录的用户),或者只是为了与您的服务或其他插件集成,例如Filter Plugin

,您可以在这里挂钩

在dataSource闭包中,你的逻辑应该限制报告中显示的内容(如果你使用的话,你的SQL查询会在这里)。如果您在link的“命名报告”部分向下滚动到salesByStateReport,则会向您提供一个示例:

dataSource = { session, params ->
        Sale.findAll('from Sale as s where s.branch.state = ? order by branch.name', [params.state])
    }

如果您使用的是实体格式,只需在静态可报告地图中将'dataSource ='更改为'dataSource:'。

这将使用实体格式从URL调用:

  

http://localhost:8080/yourAppName/djReport/?entity=yourModelClass&state=yourStateValue

或者像名称格式一样:

  

http://localhost:8080/yourAppName/djReport/?report=your报告名称& state = yourStateValue