多列动态排序

1.概述

1.1 支持版本
报表设计器版本
since 7.9.0
1.2 功能介绍

多列动态排序,和单列动态排序设置类似, 不同是需要设置不同列的排序,需要设置多个标题的超链接。

一般操作步骤如下:

1.定义数据集参数,包括排序字段和排序类型,其中,排序类型为asc或者desc;

2.设计报表;

3.定义多个列动态参数,用于当点击标题时,动态修改参数,切换排序类型;

4.通过条件格式动态显示排序图标,可省略。

2.示例

本节示例通过业务员订单数量和销售额进行排序,来演示多列动态排序制作过程。

2.1 定义数据集参数

在左侧数据集管理区域,依次点击「+」,「数据库查询」,使用「VRDemo」数据源,SQL如下:

SELECT * FROM salesman order by ${a} ${b}

注:上面SQL定义了参数「a」、「b」,其中参数a用于接收排序字段,参数b用于接收参数数据asc或者desc。

2.2 设计报表

依次拖入字段完成报表设计,如下图所示:

多列动态排序报表设计
2.3 定义动态参数

点击F1单元格,在上侧菜单栏,依次选择「插入」、「超级链接」,设置如下图所示:

单列动态排序动态参数设置

其中,参数a的值类型为常量,值为:order_num,对字段order_num排序。

参数a的值类型为表达式,表达式为:

$b=="asc" ? "desc" : "asc"

上述表达式为三元表达式,当参数b的值为asc时,则设置参数b的值为desc,否则参数b的值asc,以此完成点击标题排序切换。

点击G1单元格,在上侧菜单栏,依次选择「插入」、「超级链接」,设置如下图所示:

单列动态排序动态参数设置

其中,参数a的值类型为常量,值为:sales_count,对字段sales_count销售额进行排序。

参数a的值类型为表达式,表达式为:

$b=="asc" ? "desc" : "asc"

上述表达式为三元表达式,当参数b的值为asc时,则设置参数b的值为desc,否则参数b的值asc,以此完成点击标题排序切换。

2.4 通过条件格式动态显示排序图标
2.4.1 订单数量动态显示排序图标

此步骤可省略。点击单元格F1,依次选择「插入」、「条件格式」,建立三个条件格式,格式类型均为「新值」,如下图所示:

多列动态排序条件格式设置

条件格式1,新值表达式为:

'<svg t='1714053542111' class='icon' viewBox='0 0 1024 1024' version='1.1' xmlns='http://www.w3.org/2000/svg' p-id='2920' width='16' height='16'> <path d='M213.333333 256v597.333333H128V256H42.666667l128-128 128 128zM341.333333 213.333333V128h554.666667v85.333333H341.333333z m0 213.333334V341.333333h426.666667v85.333334H341.333333z m0 426.666666v-85.333333h170.666667v85.333333H341.333333z m0-213.333333v-85.333333h298.666667v85.333333H341.333333z' fill='#2E2F30' p-id='2921'></path></svg>' + $$$

其中,svg代码需要把双引号修改为单引号,并且使用单引号括起来。$$$为取当前单元格的值。

设置两个条件,逻辑关系为与(AND):

$b == 'asc' || $b == null

表示参数b值为升序或者为空时。

$a == 'order_num'

参数a值为order_num,表示订单数量的排序。当两个条件都满足时,显示新值,即升序图标。

条件格式2,新值表达式为:

'<svg t='1714053551583' class='icon' viewBox='0 0 1024 1024' version='1.1' xmlns='http://www.w3.org/2000/svg' p-id='3067' width='16' height='16'> <path d='M256 725.333333h85.333333l-128 128-128-128h85.333334V128h85.333333zM384 213.333333V128h554.666667v85.333333H384z m0 213.333334V341.333333h426.666667v85.333334H384z m0 426.666666v-85.333333h170.666667v85.333333H384z m0-213.333333v-85.333333h298.666667v85.333333H384z' fill='#2E2F30' p-id='3068'></path></svg>' + $$$

其中,svg代码需要把双引号修改为单引号,并且使用单引号括起来。$$$为取当前单元格的值。

设置两个条件,逻辑关系为与(AND):

$b == 'desc'

表示参数b值为降序或者为空时。

$a == 'order_num'

参数a值为order_num,表示订单数量的排序。当两个条件都满足时,显示新值,即降序图标。

条件格式3,新值表达式为:

'<svg t='1714054436671' class='icon' viewBox='0 0 1024 1024' version='1.1' xmlns='http://www.w3.org/2000/svg' p-id='2920' width='16' height='16'> <path d='M640 682.666667V128h85.333333v554.666667h128l-170.666666 213.333333-170.666667-213.333333h128zM384 341.333333v554.666667H298.666667V341.333333H170.666667l170.666666-213.333333 170.666667 213.333333H384z' fill='#2E2F30' p-id='2921'></path></svg>' + $$$

其中,svg代码需要把双引号修改为单引号,并且使用单引号括起来。$$$为取当前单元格的值。

设置1个条件:

$a != 'order_num'

表示参数a值不等于order_num,新值展示为不排序图标。

2.4.2 销量动态显示排序图标

销量的设置和2.4.1节类似,只需要把条件中order_num修改为sales_count即可。

2.5 预览报表
多列动态排序报表预览

注,当点击标题销量,会进行排序切换,并且排序图标一起变化。