1. 概述
本文列出用户在使用排序功能时的具体需求及对应方案。
注:FineReport 支持的三种排序类型分别为:数据集中的排序、高级排序、扩展后排序。这三种排序方式的介绍请参见:排序
2. 单列排序
2.1 非动态排序
2.1.1 实现效果
数据列按照升序或降序排列。如下图所示:
2.1.2 方案推荐
方案 | 备注 |
---|---|
数据集中的排序 | 通过 SQL 直接在数据库查询时排序 如果某一列是通过其他数据列计算得出的,该方案将不再适用 |
高级排序-单列排序 | 11.0.3 之前版本,参考:高级排序 (必须在最父格设置) 11.0.3 及之后版本,参考:高级排序-单列排序 |
扩展后排序 | 适用于 11.0.3 及之后版本 |
2.2 动态排序
2.2.1 实现效果
点击某个数据列的表头,实现排序效果。如下图所示:
2.2.2 方案推荐
方案 | 备注 |
---|---|
数据集中的排序 | 通过 SQL 直接在数据库查询时排序 如果某一列是通过其他数据列计算得出的,该方案将不再适用 |
点击某一列标题改变排序 | 支持数字、字符串数据的排序 若某一列是通过其他数据列计算得出的,该方案适用 |
扩展后排序 | 11.0.3 之前版本,请参见:历史版本 11.0.3 及之后版本,请参见:扩展后排序 |
3. 多列排序
3.1 非动态排序
3.1.1 实现效果
数据先按 A 列排序,B 列再按对应的 A 列排序。如下图所示:
3.1.2 方案推荐
方案 | 备注 |
---|---|
数据集中的排序 | 通过 SQL 直接在数据库查询时排序 如果某一列是通过其他数据列计算得出的,该方案将不再适用 |
高级排序-多列排序 | 适用于 11.0.3 及之后版本 |
扩展后排序 | 适用于 11.0.3 及之后版本 |
扩展后多列按先后排序 | - |
3.2 动态排序
3.2.1 实现效果
用户通过点击表头,实现多个列的升序或降序效果。如下图所示:
3.2.2 方案推荐
方案 | 备注 |
---|---|
1)方案: 2)效果: 模板预览后,数据按照「订购日期」字段降序排序,相同「订购日期」的数据可以按照「运货费」升序排序 可以单独对「订购日期」和「运货费」升序、降序排列 | 适用于 11.0.3 及之后版本 |
1)方案: 2)效果: 点击第一列,则根据第一列升序或降序排列;点击第二列,则根据第二列升序或降序排列 | - |
列标题是根据字段横向扩展得来的,点击列标题,实现升序或降序 | |
在动态列的基础上,能够对每列进行单独的排序 | |
特殊多列排序 | 决策报表的报表块在多列排序的基础上可以实现:点第一下降序,点第二下升序,点第三下恢复原状 |
4. 自定义排序
场景描述 | 效果实现 | 参考方案 |
---|---|---|
自定义数据列中具体项的排序 | 利用内置数据集实现自定义排序 |
5. 图表排序
FineReport 报表一般包括纯粹的数据展示、图表展示和控件展示,排序一般应用在数据展示中比较多,但是图表中也会稍微涉及到一点,那么在图表中的排序需要注意以下几点:
1)图表数据来源于「数据集」,故对图表排序就需要对数据集中的数据进行排序,则需要使用 数据集中的排序
2)图表数据来源于单元格,故对图表排序就是对单元格中的数据进行排序,即可以 高级排序 和 扩展后排序
3)图表排序还提供接口,详细示例请查看 图表排序接口
注:图表在不同分类下分别排序请参见:图表不同分类下分别排序
6. 分组排序
场景描述 | 效果实现 | 参考方案 |
---|---|---|
按分组汇总结果排序:先对「销售员小计」排序,再对「产品类型小计」排序,最后对「产品列表」排序 | 按分组汇总结果排序 |
7. 组内排序
场景描述 | 效果实现 | 参考方案 |
---|---|---|
实现分组动态排序且互不影响的效果:例如当点击华东的销量时,华东的销量改变排序,华北的销量不受到影响;当点击华北的销量时,华北的销量改变排序,华东的销量不受到影响 | 分组内排序互不干扰 |
8. 其他场景
场景描述 | 效果实现 | 参考方案 |
---|---|---|
想要在标题上设置「箭头」以体现当前是哪一列排序,是升序还是降序 | 排序添加动态箭头 | |
在对报表进行扩展后排序之后,若直接使用单元格插入公式 seq() 或者 &cell 这两种方法获取序号,序号的顺序是乱序的,如何让它变成正常的排序呢 | 扩展后排序重新编号 | |
按照中文的拼音先后顺序进行排序 | 扩展后中文按拼音排序 | |
「序号」是用汉字数字来表示的,那么要如何对它进行排序呢 | 汉字数字排序 | |
当报表中存在多级项目符号时,如何对它进行排序 | 多级项目符号排序 | |
在填报录入数据时,希望序号可以自动生成,且新增或删除数据行时,序号不会断开 | JS实现填报自动生成序号并排序 | |
填报的时候可以对表格进行排序。使用扩展后排序,发现了每次点击表头排序时都会刷新一下页面,这样就会导致刚刚填报的数据被刷新没了,右侧方案可解决此问题 | - | JS实现不刷新页面进行排序功能 |