大數據集報表點擊表頭排序

潤乾官方在線 demo的 "交互報表" 中,有介紹 "點擊表頭排序" 的報表案例,該報表針對普通統計類報表。對於使用大數據集的報表,當按照此方式改造時發現排序沒起做用或僅對第一頁或前幾頁排序,後面的都沒成功。html

要想了解啥緣由致使?就須要分析該報表的作法及知道大數據集的取數原理。前端

首先,來分析下在線 demo「點擊報表排序」的作法。sql

潤乾報表中實現排序的方式有兩種:緩存

一、 藉助數據集 sql,即 order by …jsp

二、 數據集函數函數

ds.select()大數據

都有排序表達式 sort_exp 或 order_exp.設計

示例中用的是第 2 中方法,因普通報表是一次性把全部數據取到內存,因此數據集函數排序是對全部數據的排序,點表頭實際就是按照某字段對全部數據排了一次序,也就沒啥問題了。3d

接下來看大數據集報表的取數原理。htm

 

簡單來講,大數據集取數原理是爲了不一次取大量數據致使內存溢出,採起了遊標方式邊取邊呈現的方案(其中取出的數據緩存在磁盤文件,前端呈現從緩存文件讀取)。

瞭解了該方案後,咱們就清楚了,採用排序的第 2 中方案,顯然只能針對一部分數據排序後呈現,並不針對全部數據。

解決方案也就明確了:要想實現大數據集報表的表頭排序,必須用第 1 中方法。

改造:

一、 去掉數據集函數排序

三、 修改超連接

因普通報表和大數據集報表用的 jsp 不一樣,因此要改一下。

以 B4 爲例,把 showReport.jsp 改成 showBigReport.jsp

 

四、 報表屬性內把數據集改成大數據集

 

經過以上 4 步,就能夠完成點擊表頭排序功能從普通到支持大數據集。另外若是想實現升降序切換也很簡單,除了點表頭傳排序的字段名外,再傳一個 asc 或 desc 的排序方式拼到 SQL 中便可。只要知道了原理及方案,改造起來相對輕鬆。

Ps:"點擊表頭排序" 的示例報表,在設計器 demo 內也有,可在 "交互報表" 目錄獲取。

相關文章
相關標籤/搜索