多列动态排序

  • 文档创建者:axing
  • 编辑次数:2次
  • 最近更新:Leo.Tsai 于 2020-02-28
  • 1. 概述

    1.1 问题描述

    现有的 多列排序 文档中,日期时间类型的数据需要特殊设置,字符串类型的数据无法实现动态排序。

    那么该如何实现数字、日期、字符串都能动态排序呢,如下图所示:

    排序.gif

    1.2 实现思路

    利用SORTARRAY()对数组进行排序,再利用INARRAY()得到对应的数组下标进行排序。

    2. 示例

    2.1 数据准备

    新建普通报表,新建数据集 ds1,数据库查询语句如下:

    SELECT 订购日期,货主名称,应付金额 

    FROM 订单 

    where substr(订购日期,1,4)='1996' 

    limit 10

    image.png

    2.2 报表设计

    1)如下图设计报表:

    image.png

    2)选中 A1 单元格,添加超级链接>动态参数,如下表添加动态参数:

    参数值类型
    a
    公式if($a=1,-1,1)
    asc字符串A2

    image.png

    3)同理设置 B1 单元格:

    参数值类型
    a
    公式if($a=1,-1,1)
    asc字符串B2

    4)同理设置 C1 单元格:

    参数值类型
    a
    公式if($a=1,-1,1)
    asc字符串C2

    5)选中 A2 单元格,设置扩展后排序,公式为:INARRAY(EVAL($asc),SORTARRAY(EVAL($asc+"[!0]")))*$a

    image.png

    2.3 效果预览

    1)PC端

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

    排序.gif

    2)移动端

    排序H5.gif

    3. 模板下载

    已完成模板可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Primary\GroupReport\多列动态排序.cpt

    点击下载模板:多列动态排序.cpt

    附件列表


    主题: 报表应用
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!