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……等多列共同排序,等等。
- 也可以实现,不局限于 升序,降序,可以加 不排序的状态。


浙公网安备 33010602011771号