1. 概述编辑
1.1 应用场景
「扩展后排序」在制作报表过程中可以实现多种排序需求,是最灵活的排序方式,但由于在扩展完成后进行排序,会对所有格子的位置进行调整,因此性能最差。
建议在 高级排序 无法实现的情况下再使用「扩展后排序」。
1.2 功能描述
「扩展后排序」在「单元格属性>扩展>高级」中设置,设置在需要排序的左父格上,一般设置在「最父格」,例如 C1 单元格的左父格是 B1,B1 单元格的左父格是 A1,那么 A1 即为「最父格」。
如在 A1 单元格(最父格)中设置「扩展后排序>升序」,公式中输入 C1,则 A1 单元格会根据 C1 单元格的计算结果进行排序,如下图所示:
2. 示例编辑
下面我们以「扩展后排序」来实现按「销量」列升序和降序作为简单的示例讲解。效果如下图:
2.1 数据准备
新建普通报表,新建数据库查询 ds1,SQL 语句为:SELECT * FROM 销量。
2.2 设计报表
将数据集中字段依次拖入 A2~F2 单元格中,A1~F1 单元格输入对应标题,设置表格样式如下图所示:
将 A2 单元格的「数据设置」修改为「列表」,如下图所示:
2.3 添加动态参数
给 E1 单元格添加「超级链接>动态参数」,添加两个动态参数,分别重命名为「升序」和「降序」,参数设置如下表:
动态参数 | 参数名 | 参数值类型 | 参数值 |
---|---|---|---|
升序 | order | 字符串 | asc |
降序 | order | 字符串 | desc |
以「升序」为例,步骤如下图所示:
2.4 设置模板参数
为了使报表预览时默认为按照销量「升序」排序,需设置「模板参数」,参数名需和「动态参数」保存一致,默认值为字符串「asc」。步骤如下图所示:
2.5 设置扩展后排序
选中「最父格」A2 单元格,选择右侧属性面板「单元格属性>扩展>高级」,选择「扩展后排序」为「升序」,进入公式定义界面,输入公式:
if($order='asc',E2,E2*-1),公式表示:若 order 为 asc 即升序,则按照 E2 进行升序排列,否则按照 E2 降序排列。
注1:本例只有在「最父格」单元格设置排序才生效。
注2:公式中的 E2 单元格的数值类型必须是「数字型」,日期时间类型的数据需要特殊设置,详情可参见文档:多列动态排序
2.6 效果预览
保存报表,点击「分页预览」,效果如下图所示:
注:支持 App 端和 HTML5 端预览。
3. 模板下载编辑
已完成模板设置可参考:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject\OrderReport\扩展后排序.cpt
点击下载模板:扩展后排序.cpt