Jasper reports 将Jasper ConditionalStyles与命名样式引用一起使用

Jasper reports 将Jasper ConditionalStyles与命名样式引用一起使用,jasper-reports,Jasper Reports,在这种情况下,我会根据程序生成的jrxml文件和具有给定名称和给定样式名称的样式模板创建一个报告。在有条件样式的情况下,这种方法可以很好地工作。我发现的每个示例都只是使用ConditionalStyles来更改一些值,比如为特定情况设置不同的背景色。这里不能这样做,因为无法知道是什么将偶数行样式与奇数行样式区分开来。像wheter一样,奇数行将获得灰色背景,偶数行将获得绿色前景和黑色底笔 我试过或看到的: 使用条件样式-似乎无法定义样式引用来更改样式值 使用变量作为样式名称-未计算该变量 使用

在这种情况下,我会根据程序生成的jrxml文件和具有给定名称和给定样式名称的样式模板创建一个报告。在有条件样式的情况下,这种方法可以很好地工作。我发现的每个示例都只是使用ConditionalStyles来更改一些值,比如为特定情况设置不同的背景色。这里不能这样做,因为无法知道是什么将偶数行样式与奇数行样式区分开来。像wheter一样,奇数行将获得灰色背景,偶数行将获得绿色前景和黑色底笔

我试过或看到的:

  • 使用条件样式-似乎无法定义样式引用来更改样式值
  • 使用变量作为样式名称-未计算该变量
  • 使用2个ConditionalStyles(使用偶数和奇数样式作为父样式)创建样式-在创建jrtx文件时忽略这些样式

所以。。。有没有办法使用样式引用创建备用样式行?如果是,它是如何实现的?

简单地说就是知道是什么将偶数行样式与奇数行样式区分开来的方法。
偶数行将满足该条件

(($V{REPORT_COUNT}%2) == 0)
(($V{REPORT_COUNT}%2) != 0)
奇数行将满足该条件

(($V{REPORT_COUNT}%2) == 0)
(($V{REPORT_COUNT}%2) != 0)

然后,您可以使用具有上述条件的条件样式

,因为似乎没有解决方案,我们必须更改样式文件的结构以包含条件样式,而不是在文档中这样做

走这条路并尝试以编程方式更改或创建这些样式文件时,请注意,在Jasper附带的
JRXmlTemplateWriter
中,方法
toWriteConditionalStyles
的实现如下:

protected boolean toWriteConditionalStyles() {
    return false;
}

这是不幸的。您必须使用自己的导出器来更改此行为。

我知道,我要问的是如何在条件样式中引用外部命名样式或以任何其他方式创建相同的结果。