1. 概述
1.1 版本
FineReport 版本 |
---|
11.0 |
1.2 問題描述
決策報表使用 圖表排序API 進行排序,JS程式碼寫在圖表的初始化後事件中,初次預覽正常排序,縮減瀏覽器視窗後排序失效。
注:普通報表的圖表排序寫在載入結束事件中,調整視窗不會使排序失效
1.3 解決方案
1)方法一:為圖表新增初始化後事件, window.onresize() 事件,即在瀏覽器視窗大小發生調整時就會執行。
2)方法二:為 body 新增初始化後事件, window.onresize() 事件,即在瀏覽器視窗大小發生調整時就會執行。
2. 範例
開啟報表:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doctw\Chart\GraphSwitching\圖表排序.frm
2.1 方法一
1)選中圖表組件,點選「事件」,新增初始化事件,如下圖所示:
JS 程式碼如下:
注: 這裏重複執行兩次 chart.sortChart() 的原因是保證排序規則不變,在調整視窗大小後可以保持最開始的排序規則,即始終升冪或者降冪。
window.onresize = function() {
setTimeout(function() {
var chart = FR.Chart.WebUtils.getChart("chart0").getChartWithIndex(0);
chart.sortChart();
chart.sortChart();
}, 2000);
}
2)儲存報表,選擇 PC 端預覽,效果如下:
注:不支援行動端。
2.2 方法二
1)選中 body,點選「事件」,新增初始化事件,如下圖所示:
注:僅適用於新自適應。
JS 程式碼如下:
window.onresize = function() {
setTimeout(function() {
var chart = FR.Chart.WebUtils.getChart("chart0").getChartWithIndex(0);
chart.sortChart();
chart.sortChart();
}, 2000);
}
2)儲存報表,選擇 PC 端預覽,效果與 2.1 節相同。