【问题标题】:Jasper Reports - How to sort crosstab when using multiple measuresJasper Reports - 如何在使用多个度量时对交叉表进行排序
【发布时间】:2018-08-23 16:40:12
【问题描述】:

我在 Jasper Studio 中创建了一个交叉表,其中显示了客户的销售额、数量和百分比保证金总计。这个交叉表的主要复杂性是百分比保证金,因为它不能使用简单的总和、计数或平均值来报告正确的数字,需要单独计算。为了解决这个问题,我制定了 4 个措施:

  1. 用于主要数据(1 个字段中的销售额、数量和利润的组合)
  2. 右侧总计
  3. 用于底线摘要,以及
  4. 用于总计和汇总相交的“总计”字段。

客户端需要在运行时使用 Jasper Server 的交互式排序功能对交叉表进行排序。这是有效的,但前提是交叉表使用一种度量。一旦我添加了其他 3 个度量,所有列的排序选项都会变灰,并且排序不再适用于客户端。

有什么方法可以使这种排序工作,即使我使用多个度量?或者有没有其他方法可以使用单个度量来显示我需要的信息?

【问题讨论】:

    标签: jasper-reports


    【解决方案1】:

    您需要做的是将列标题单元格中元素的net.sf.jasperreports.crosstab.column.header.sort.measure.index 属性设置为您希望列排序依据的度量的从0 开始的索引。

    如

    <columnGroup ...>
        ...
        <crosstabColumnHeader>
            <cellContents>
                <textField>
                    <reportElement ...>
                        <!-- sort by the second measure -->
                        <property name="net.sf.jasperreports.crosstab.column.header.sort.measure.index" value="1"/>
                    </reportElement>
    

    【讨论】:

    • 谢谢你的回复,达达。不幸的是,这并不能解决问题,我没有尝试按不同的度量进行排序,一旦我在交叉表中包含多个度量,我就无法按 any 度量进行排序。如果还有其他类似这样的“隐藏”属性可用于设置其中一个,则可能是解决此问题的方法
    • 当您有多个度量时,您需要明确说明(通过设置属性)要使用哪一个进行排序。如果未设置该属性,则排序将被禁用,因为引擎不想选择任意度量进行排序。
    • 不要误会,我确实尝试了几种方法,所以也许我没有完全理解它。请允许我详细说明,以便我再试一次。对于index value="1" ,有什么方法可以确定我需要在这里输入哪个号码? 1、2、3、4就这么简单对应我的4个措施吗?另一个奇怪的事情是排序似乎仍然在左侧的名称上起作用,但没有其他列,所以如果它可以在运行时在该列上正确排序,为什么其他列也不能呢?
    • 该属性的值是从0开始的列索引。所以 value="0" 对应于第一个度量,value="1" 对应于第二个度量,依此类推。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多