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 及之後版本,請參見:擴展後排序 |
JS實現決策報表中點選標題排序 | - |
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)效果: 點選第一欄,則根據第一欄升冪或降冪排列;點選第二欄,則根據第二欄升冪或降冪排列 | - |
欄標題是根據欄位橫向擴展得來的,點選欄標題,實現升冪或降冪 | |
在動態欄的基礎上,能夠對每欄進行單獨的排序 | |
特殊多欄排序 | 決策報表的報表塊在多欄排序的基礎上可以實現:點第一下降冪,點第二下升冪,點第三下恢復原狀 |
JS實現決策報表中點選標題排序 | 決策報表中多欄透過點選標題進行排序 |
4. 自訂排序
場景描述 | 效果實現 | 參考方案 |
---|---|---|
自訂資料欄中具體項的排序 | ![]() | 利用內建資料集實現自訂排序 |
5. 圖表排序
FineReport 報表一般包括純粹的資料展示、圖表展示和元件展示,排序一般應用在資料展示中比較多,但是圖表中也會稍微涉及到一點,那麼在圖表中的排序需要注意以下幾點:
1)圖表資料來源於「資料集」,故對圖表排序就需要對資料集中的資料進行排序,則需要使用 資料集中的排序
2)圖表資料來源於儲存格,故對圖表排序就是對儲存格中的資料進行排序,即可以 進階排序 和 擴展後排序
3)圖表排序還提供API,詳細範例請查看 [新]圖表排序API
注:圖表在不同分類下分別排序請參見:圖表不同分類下分別排序
6. 分組排序
場景描述 | 效果實現 | 參考方案 |
---|---|---|
按分組匯總結果排序:先對「銷售員小計」排序,再對「產品類型小計」排序,最後對「產品列表」排序 | ![]() | 按分組匯總結果排序 |
7. 組內排序
場景描述 | 效果實現 | 參考方案 |
---|---|---|
實現分組動態排序且互不影響的效果:例如當點選華東的銷量時,華東的銷量改變排序,華北的銷量不受到影響;當點選華北的銷量時,華北的銷量改變排序,華東的銷量不受到影響 | ![]() | 分組內排序互不干擾 |
8. 其他場景
場景描述 | 效果實現 | 參考方案 |
---|---|---|
想要在標題上設定「箭頭」以體現當前是哪一欄排序,是升冪還是降冪 | ![]() | 排序新增動態箭頭 |
在對報表進行擴展後排序之後,若直接使用儲存格插入公式 seq() 或者 &cell 這兩種方法獲取序號,序號的順序是亂序的,如何讓它變成正常的排序呢 | ![]() | 擴展後排序重新編號 |
按照中文的拼音先後順序進行排序 | ![]() | 擴展後中文按拼音排序 |
「序號」是用漢字數字來表示的,那麼要如何對它進行排序呢 | ![]() | 漢字數字排序 |
當報表中存在多級項目符號時,如何對它進行排序 | ![]() | 多級項目符號排序 |
在填報錄入資料時,希望序號可以自動生成,且新增或刪除資料列時,序號不會斷開 | ![]() | JS實現填報自動生成序號並排序 |
填報的時候可以對表格進行排序。使用擴展後排序,發現了每次點選表頭排序時都會重新整理一下頁面,這樣就會導致剛剛填報的資料被重新整理沒了,右側方案可解決此問題 | - | JS實現不重新整理頁面進行排序功能 |