历史版本23 :扩展后排序 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 应用场景

「扩展后排序」在制作报表过程中可以实现多种排序需求,是最灵活的排序方式,但由于在扩展完成后进行排序,会对所有格子的位置进行调整,因此性能最差。

建议在 高级排序 无法实现的情况下再使用「扩展后排序」。

1.2 功能描述

「扩展后排序」在「单元格属性>扩展>高级」中设置,设置在需要排序的左父格上,一般设置在「最父格」,例如 C1 单元格的左父格是 B1,B1 单元格的左父格是 A1,那么 A1 即为「最父格」。

如在 A1 单元格(最父格)中设置「扩展后排序>升序」,公式中输入 C1,则 A1 单元格会根据 C1 单元格的计算结果进行排序,如下图所示:

222

2. 示例编辑

下面我们以「扩展后排序」来实现按「销量」列升序和降序作为简单的示例讲解。效果如下图:

1615516440708122.gif

2.1 数据准备

新建普通报表,新建数据库查询 ds1,SQL 语句为:SELECT * FROM 销量

Snag_55b3c02.png

2.2 设计报表

将数据集中字段依次拖入 A2~F2 单元格中,A1~F1 单元格输入对应标题,设置表格样式如下图所示:

1615516654643175.png

将 A2 单元格的「数据设置」修改为「列表」,如下图所示:

1615517053181467.png

2.3 添加动态参数

给 E1 单元格添加「超级链接>动态参数」,添加两个动态参数,分别重命名为「升序」和「降序」,参数设置如下表:

动态参数
参数名参数值类型参数值
升序order字符串asc
降序order字符串desc

以「升序」为例,步骤如下图所示:
1615517606419437.png

2.4 设置模板参数

为了使报表预览时默认为按照销量「升序」排序,需设置「模板参数」,参数名需和「动态参数」保存一致,默认值为字符串「asc」。步骤如下图所示:

1615517957127072.png

2.5 设置扩展后排序

选中「最父格」A2 单元格,选择右侧属性面板「单元格属性>扩展>高级」,选择「扩展后排序」为「升序」,进入公式定义界面,输入公式:

if($order='asc',E2,E2*-1),公式表示:若 order 为 asc 即升序,则按照 E2 进行升序排列,否则按照 E2 降序排列。

注1:本例只有在「最父格」单元格设置排序才生效。

注2:公式中的 E2 单元格的数值类型必须是「数字型」,日期时间类型的数据需要特殊设置,详情可参见文档:多列动态排序

1615519963993414.png

2.6 效果预览

保存报表,点击「分页预览」,效果如下图所示:

1615516440708122.gif

注:支持 App 端和 HTML5 端预览。

3. 模板下载编辑

已完成模板设置可参考:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject\OrderReport\扩展后排序.cpt

点击下载模板:扩展后排序.cpt