反饋已提交

網絡繁忙

當前為10.0版本文檔,更多實例內容將在最新幫助文檔中展現,點選跳轉至 最新版幫助文檔

排序

1. 概述

排序分为:数据集中的排序,高级排序以及扩展后排序,下面我们分别看下这三种排序的优缺点。

2. 排序优缺点

2.1 数据集中的排序

优点:通过 SQL 直接在数据库排序,性能最佳。

缺点:所有计算都必须要在数据库中做,会导致 SQL 很复杂,难以维护。另外有些计算是无法用 SQL 完成的。

2.2 高级排序

优点:这种排序是在扩展过程中,对当前扩展的格子的排序,性能较数据集排序次之,比数据集排序好的地方就是可以利用报表的计算,做一些稍微复杂些的排序。

缺点:公式必须通过数据列还原才能使用此排序,并且导致了公式的二次计算。另外若公式无法用数据列进行还原则无法完成。

2.3 扩展后排序

优点:最为灵活,满足目前所有的排序需求。

缺点:由于在扩展完成后进行排序,会对所有格子的位置进行调整,因此性能最差。

注:高级排序是在报表执行前进行排序,扩展后排序是报表执行后再进行排序;三种排序各有其优缺点,可以根据自己排序的具体需求进行选择。

3. 不同模板的排序

FineReport 报表一般包括纯粹的数据展示、图表展示和控件展示,排序一般应用在数据展示中比较多,但是图表中也会稍微涉及到一点,那么数据展示排序与图表排序有什么区别呢?

3.1 数据展示排序

通过单元格展示数据时,可以直接在数据集中进行排序,也可以在单元格中进行排序。

3.2 图表排序

图表排序是指对图片的分类或者系列进行排序,那么,图表排序也就是对图表分类或者系列的数据进行排序,在 图表数据源 中我们讲解过,图表数据源分为数据集数据单元格数据,故图表排序根据其数据源类型的不同,其排序方法设置也有所不同。

1)数据集数据

图表数据来源于数据集,故对图表排序就需要对数据集中的数据进行排序,即 数据集中的排序

2)单元格数据源

图表数据来源于单元格,故对图表排序就是对单元格中的数据进行排序,即可以 高级排序自定义排序 和 扩展后排序

图表排序还提供接口,详细示例请查看 [新]图表排序接口

索引:

数据集中的排序

分组内排序互不干扰

扩展后多列按先后排序

按分组汇总结果排序

高级排序

自定义排序

扩展后排序

根据点击次数奇偶性排序之数值型

根据点击次数奇偶性排序之字符型

多列排序

扩展后中文按拼音排序

利用内置数据集实现自定义排序

多列排序添加动态箭头

字符型数据动态排序

横向扩展列多列排序

非纯数字扩展列乱序排列的解决方案

4. 注意事项

4.1 排序报错

4.1.1 问题描述

部分报表在使用排序功能时,偶尔会抛出异常:Comparison method violates its general contract,如下图所示:

1585300804370699.jpg

4.1.2 原因分析

在 JDK6 中运行正常,而在 JDK7 中却会抛异常,因为 JDK7 及之后版本底层的排序算法从 MergeSort 换成了 TimSort。

4.1.3 解决方案

如果要继续使用 JDK6 的排序算法,可以打开%FR_HOME%\ bin\designer.vmoptions 在JVM 启动参数中加入参数:

-Djava.util.Arrays.useLegacyMergeSort=true 

如下图所示:

Snag_1e1fa1db.png

配置后,就会依旧使用 JDK6 的排序算法,解决这个兼容的问题。

附件列表


主題: 原简体文档
已經是第一篇
已經是最後一篇
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤

文 檔回 饋

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉