多列排序

编辑
  • 文档创建者:印然
  • 浏览次数:19023次
  • 编辑次数:15次
  • 最近更新:Leo.Tsai 于 2019-09-23
  • 1. 描述

    根据点击次数奇偶性排序之数值型 这篇文档中中介绍了点击数据列标题实现升序降序排序,那么,如果有多个列想实现这样的升序降序功能呢。

    即点击订单 ID 是根据订单 ID 升序排序,再点击订单 ID 则根据订单 ID 降序排序,接着点击运货费则根据运货费升序排序,以此类推。

    2. 思路

    通过单元格「扩展后排序」这个功能来实现,即点击数据列标题时,将该数据列所在单元格作为参数传递过去,在扩展后排序公式中接收该参数,根据参数的不同,实现不同的排序,下面详细介绍。

    3. 示例

    3.1 数据准备

    新建数据集 ds1,添加 SQL 查询语句:SELECT EMPID,EMPNAME,BIRTHDATE,HEIGHT FROM EMPLOYEE limit 10

    222

    3.2 报表设计

    将 EMPID EMPNAME BIRTHDATE HEIGHT 字段分别拖到 A3,B3,C3,D3 单元格,如下图所示:

    222

    3.3 超级链接参数设置

    1)选中 A2 单元格,右键,选择超级链接,添加一个动态参数,增加 2 个参数,如下图所示:

    222

    参数 a 的意义在于,点击一次超级链接就替换一次a的值,那么在下面进行排序就可以根据a的值来决定是升序还是降序。

    参数 asc 是要排序的单元格,注意:它的值类型是字符串。

    2)选中 D2 单元格,同理设置,如下图所示:

    222

    3)选中 C2 单元格,因为 C3 是时间类型的原因,因此动态参数设置如下:

    222

    其中 asc 参数为:tointeger(format(C3,'yyyyMMddHHmmss'))

    若是时间类型仅包含年月日,则参数为:tointeger(replace(C3,"-",""))

    注:此处虽然填的是公式,但参数类型仍是字符串

    第二列是字符串类型,无法动态排序

    3.4 扩展后排序

    选中 A3 单元格,在单元格属性>扩展属性中选择扩展后,选中升序,输入公式if($a==1,eval($asc),eval($asc)*-1),如下图所示:

    222

    注:后面单元格是跟随第一列扩展的,只有在顶级的左父格设置扩展后排序才有用,该公式if($a==1,eval($asc),eval($asc)*-1)放在顶级左父格才会生效,该示例中如果放在 B3 单元格,排序就无效。

    4. 效果预览

    4.1 PC端

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

    222

    4.2 移动端

    移动端查看报表的方式参见 报表移动端预览

    222

    4.3 H5

    222

    5. 已完成模板

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

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






    附件列表


    主题: 报表应用
    标签: 暂无标签
    如果您认为本文档还有待完善,请编辑

    文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
    关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
    若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

    此页面有帮助吗?只是浏览 [ 去社区提问 ]