頂( 20)
最後更新日期: 2015-8-14
示例1. 問題描述
若模板中希望按照某列進行排序,而此列是無法用資料集函式還原的即無法使用高階排序進行排序設定,為此finereport提供了擴充套件後排序,滿足一切排序的需求。
2. 實現方法
2.1 設定方法
右擊 單元格》擴充套件屬性或者選中單元格,在右側下方的單元格屬性表-擴充套件屬性中對擴充套件後排序進行設定,如在a1單元格中設定擴充套件後排序》公升序,公式中輸入b1,則a1單元格會根據b1單元格的計算結果進行排序,如下圖:
2.2 產生的問題
由於是對擴充套件後的資料進行重新排序,只是根據結果改變行的順序,因此若模板中有通過seq或者&單元格設定序號時,原本生成的序號會在重新排序時打亂。
2.3 解決方案
在序號所在的單元格設定條件屬性,
條件屬性》新值,在新增的新值處選擇公式,輸入公式row(),這樣在重新排序時會根據當前所在行重新生成序號。
3. 示例
下面我們以擴充套件後排序來實現多資料集關聯排序。效果如下:
預設專案名稱根據年度投資計畫總額公升序排列
選擇降序排列後,專案名稱根據年度投資計畫總額降序排列
3.1 開啟模板
開啟模板:
%fr_home%\webreport\web-inf\reportlets\doc\advanced\multidatasource\multi_2.cpt
3.2 超級鏈結設定
給年度投資計畫(d2單元格),新增
超級鏈結》動態引數,新增2個動態引數為「公升序」與「降序」,order就為引數名,其引數值,分別為asc(公升序),desc(降序)。
3.3 排序方法設定
右擊專案名稱所在列(b4單元格),
右擊》擴充套件屬性,在右側下方的單元格屬性面板中設定擴充套件後排序為公升序並且公式為:
if($order == 'asc',d4,-d4)。
注:這個公式的意義在於:若order為asc即公升序則按照d4進行公升序排列,若選擇desc即降序則按照-d4公升序。
3.4 條件屬性設定
原模板中使用了&來產生序號,會發現重新排序後順序被打亂了,需要使用條件屬性重新生成序號。在序號(a4單元格)中增加新值條件屬性,選擇公式,在公式中輸入:
row()-3。
3.5 總結
以上便設定好了,預覽即可看到上圖效果。可以看出,在資料列的高階處進行排序需要進行很複雜的公式進行還原,而用擴充套件後排序只需要引用對應的單元格即可。
具體的模板設定可參考:
%fr_home%\webreport\web-inf\reportlets\doc\specialsubject\orderreport\order_2.cpt。
order_2.cpt
mysql 先分組 後排序
mysql 正常的邏輯 select from table group by a order by b desc 會預設 先分組再排序 但是實際的開發過程中難免會遇到先排序 後分組的情況 這個時候 就要想其他的方法 1 mysql 5.7 以下 select from select from tab...
c 合併陣列後排序輸出
protected void page load object sender,eventargs e int b int arr1 int arr2 int arr3 int result compoundarray arr1,arr2,arr3 foreach int i in result re...
java讀取檔案列表後排序
掃瞄檔案目錄得到檔案集合list後排序時需要自定義規則 list集合不能對元素型別為file的進行排序 核心方法 collections.sort listlist,comparator c 備註 以下還對要掃瞄的檔案進行過濾 即只取txt檔案 file file new file filepath...