点击列头排序

教学视频

目标

要实现的效果如下图所示:

demo

实现方法有两种:一种就是在数据集中将排序好的数据取出展示;另一种就是在报表中对取到的数据进行排序展示。

添加报表参数

首先我们需要在报表中添加一个名为p1的参数,类型为字符串,默认值为asc,如下图:

image-20211107122217944

方法一:数据集排序

1.配置数据集

添加一个加载employee表的数据集,如下图:

image-20211107121734738

在上面的数据集中,SQL内容为一个表达式,通过使用表达式来返回当前数据集要使用的具体SQL。

BaskReport当中SQL数据集中的SQL部分${...}包裹,中间的部分就是标准的表达式

在这个表达式当中,返回的SQL为"select * from employee order by salary " + $p1,这其中$p1为一个定义在报表中的参数,这样当前SQL在运行时会从报表中取出名为p1的参数的值,将其与前面的SQL内容拼装在一起返回,作为当前数据加载数据的SQL。

设计报表效果如下图:

image-20211107122340511

保存预览,可以看到当前报表数据已按钮salary字段进行排序,效果如下:

image-20211107130538806

2.设置排序

选中C1单元格,在右侧属性面板中切换到链接页签,添加一个单元格链接,如下图:

image-20211107130753420

链接类型为设置参数,在弹出的窗口中配置如下图:

image-20211107130910283

点击如上图所示的按钮,会将当前报表中定义好的参数加载到下面的表格当中,接下来就可以定义点击这个链接时对参数值的修改

上图当中,点击链接要修改p1参数的值,值表达式为:$p1=="asc" ? "desc" : "asc",表示如果当前p1参数的值为asc,那么就设置p1参数值为desc,否则就设置为asc,保存预览就可以看到预期效果。

方法二:报表单元格排序

还是使用方法一中产生的报表,因为不再采用数据集实现排序,所以修改employee数据集,将SQL直接改成下图中的样子:

image-20211107131354486

接下来选中A2单元格,在右侧属性面板中修改其数据展开后排序属性为自定义,如下图:

image-20211107131630191

在具体的自定义排序内容中,排序字段我们输入“salary”,排序方式为表达式$p1=="asc" ? "desc" : "asc",保存预览,可以看到同样的效果。

在上面的配置当中,只所以选择A2单元格配置自定义排序,而不是选择C2单元格设置排序,是因为C2单元格的数据是受限于其左父格的数据,最先加载数据的左父格是A2,所以要在A2单元格上设置自定义排序。

设置自定义排序时,需要设置两个属性,这两个属性都要以表达式形式提供,所以这里的排序字段我们用的是"salary",将salary用引号包裹,表示是一个字符串,如果不加引号,那么就表示一个变量名,我们这里要排序的字段就是salary,所以直接输入“salary”;

排序方式$p1=="asc" ? "desc" : "asc"是一个三元表达式,表示如果参数p1值为asc那么返回desc,否则返回asc。

这种方法相对上面的方法来说如果数据量较大,性能要差一些,实际使用时推荐使用第一种方法。

results matching ""

    No results matching ""