FR报表点击列头动态排序的实现方案

报表动态排序的实现方案

概述

介绍通过单击同一列头实现升序和降序切换的方案。

实现原理

使用一个动态参数记录排序状态:

  • 参数值为1:升序排列
  • 参数值为2:降序排列
  • 点击时自动切换状态

实现步骤

1. 创建动态参数

参数名称: order1
默认值: 1

2. 配置参数切换逻辑

-- 参数切换
if($order1 == 1, 2, 1)

3. 设置动态显示文案

-- 显示文案
if($order1 == 1, "xx金额↑", "xx金额↓")

4. 配置数据集排序

-- 基础查询
SELECT * FROM table_name WHERE 1=1

-- 动态排序条件
${if(order1==1, " ORDER BY xx金额 ASC", "")}
${if(order1==2, " ORDER BY xx金额 DESC", "")}

进阶优化

图标化显示

使用条件格式根据$order1值显示不同的箭头图标:

-- 条件格式表达式
$order1 == 1  -- 升序图标
$order1 == 2  -- 降序图标

多字段排序

扩展支持多个字段:

-- 多参数管理
order_name    -- 姓名排序状态
order_date    -- 日期排序状态
order_amount  -- 金额排序状态

完整示例

场景: 客户信息表排序

-- 1. 参数切换
if($order_name == 1, 2, 1)

-- 2. 显示文案
if($order_name == 1, "客户姓名 ↑", "客户姓名 ↓")

-- 3. SQL排序
SELECT customer_id, customer_name, phone, address 
FROM customer_info WHERE 1=1
${if(order_name==1, " ORDER BY customer_name ASC", "")}
${if(order_name==2, " ORDER BY customer_name DESC", "")}

注意事项

  • 设置合理的默认参数值
  • 大数据量时考虑分页机制
  • 合理使用数据库索引
  • 要注意排序 是否要加 nulls last 避免空值排在最前面。

总结

  • 通过单一动态参数实现排序状态切换,简化了用户操作流程,提升了报表交互体验。结合图标化显示(图标图片,或者也可以用svg图的,用html显示的方式),可以进一步提升报表的美观度。
  • 在这个基础上也还是可以扩展为 按照字段1及字段2……等多列共同排序,等等。
  • 也可以实现,不局限于 升序,降序,可以加 不排序的状态。
posted @ 2025-05-28 21:36  灯熄帘摇月候身  阅读(39)  评论(0)    收藏  举报