Jasper reports 组更改时如何应用条件样式?

Jasper reports 组更改时如何应用条件样式?,jasper-reports,Jasper Reports,关于如何在报告的行中添加斑马线,有很多教程。像这样: +-------+-------+ | Value | Color | +-------+-------+ | A | white | | A | black | | B | white | | B | black | | B | white | | C | black | | D | white | | D | black | +-------+-------+ +-----

关于如何在报告的行中添加斑马线,有很多教程。像这样:

+-------+-------+
| Value | Color |
+-------+-------+
| A     | white |
| A     | black |
| B     | white |
| B     | black |
| B     | white |
| C     | black |
| D     | white |
| D     | black |
+-------+-------+
+-------+-------+
| Value | Color |
+-------+-------+
| A     | white |
| A     | white |
| B     | black |
| B     | black |
| B     | black |
| C     | white |
| D     | black |
| D     | black |
+-------+-------+
但我想做的是分组剥离。像这样:

+-------+-------+
| Value | Color |
+-------+-------+
| A     | white |
| A     | black |
| B     | white |
| B     | black |
| B     | white |
| C     | black |
| D     | white |
| D     | black |
+-------+-------+
+-------+-------+
| Value | Color |
+-------+-------+
| A     | white |
| A     | white |
| B     | black |
| B     | black |
| B     | black |
| C     | white |
| D     | black |
| D     | black |
+-------+-------+
我使用列“Value”作为组的表达式,数据按“Value”排序。“黑色”是组为黑色时要打印的黑色矩形。“白色”表示没有黑色矩形。我想要一个变量,我可以把它放在黑色矩形的“Print When Expression”中

到目前为止,我一直在尝试:

  • 创建变量$V{print}
  • 初始值表达式:false
  • 变量表达式:$V{print}
  • 增量类型:组
  • 增量组:值

我希望$V{print}的值在组每次更改时都会更改为相反的值。我得到的是普通条带列表(黑、白、黑、白……)

当前解决方案的问题是:

calculationType=“无”
:这是变量执行的默认计算类型。这意味着在数据源中的每次迭代中都会重新计算变量的值,并且返回的值是通过简单地计算变量的表达式来获得的

这种类型的计算将使您的
incrementType
无效,因此
incrementType
无效,因为我们没有计算。这就是为什么现在你得到黑,白,黑,白

这将达到你想要的结果

变量定义(让我们做一些计算示例,每次组更改、求和或计数时递增1)


conditionExpression(我们可以使用模数运算符变量
GroupCnt


完整jrxml的示例(我添加了一个矩形作为OP注释)


new Boolean($V{GroupCnt}.intValue()%2==0)
new Boolean
intValue()
仅用于与旧jasper报表版本兼容,最新版本不需要它

结果


我相信我的变量$V{print}可以在您的应用程序中使用。因为最后他们使用组增量,结果是一个布尔值。我认为使用矩形的问题在于它们没有像文本字段那样的“计算时间”。当计算文本字段时,表达式是否在计算中?@Gustavo就您当前的calculationType=“Nothing”解决方案而言,我已经编辑了答案,以便您可以看到为什么这样做不起作用(使增量类型无效)@Gustavo关于计算时间,我看不到这与问题的关系,因为它不需要(现在应该是),我上面的矩形示例也会产生相同的结果。(我也有更新答案)由于我不需要组更改的次数,我尝试使用
布尔
变量。但由于没有
不计算,我将计算设置为
,并进行了“计算”“在表达式中。我不知道计算
没有任何东西会使
递增类型无效。事实上,我仍然不理解或同意这种行为。无论如何,谢谢。它工作得很好,条件样式(在矩形上)解决方案是一个加号。1)JasperReports架构引用:“incrementType:执行计算的变量的增量级别.2)JasperReports终极指南:增量类型:此属性允许您选择变量增量的确切时刻。。。。3) iReport属性注释:增量类型:应计算变量表达式以获取新值的时间。第一个参考资料正是你所说的。另外两个是我过去认为的增量类型。