一.概要
1.応用シーン
新エンジンでは、テンプレートプレビューが遅い問題が効果的に解決されましたが、データセットのエクスポートはまだ遅いです。
2.実現の原理
データセットのエクスポートが遅い理由は、主にエクスポートを実行する前に、すべてのテンプレートを計算しなければならないことにあり、それを解決するために、新計算エンジンは大規模データセットへのエクスポートをサポートする必要があります。
そこで、ツールバーでカスタムボタンを追加し、カスタムイベントJSを書き込むことで、大規模データセットへのエクスポートが実現され、エクスポートのスピードが大幅に引き上げられます。
注:上記の方法は新計算エンジンの.cptテンプレートに適用します。
二.例示
1.カスタムボタン
1.テンプレート%FR_HOME%\webroot\WEB-INF\reportlets\demo\NewbieGuide\行式报表.cptを開き、新計算エンジンを使用します。詳しい方法は新计算エンジン使用をご参考ください。
2.メニューバーのテンプレート-テンプレートのWeb属性をクリックし、テンプレートWeb属性の設定画面で改ページプレビュー設定-テンプレート個別設定の順で操作します。具体的には下記の図の通りです。
3.ツールバーにカスタムボタンを追加し、下図のように編集ボタンをクリックします。
4.カスタムボタンを大型データセット導出に命名し、「カスタムイベント」ボタンをクリックします。具体的には下記の図の通りです。
5.イベント編集画面にJSコードを書き込みます。具体的には下記の図の通りです。
JSコードは下記のとおりです。
var dsName = encodeURIComponent("ds1");
var url = "http://localhost:8075/webroot/decision/url/report/v10/direct/export" +"?sessionID="+ Report.SessionMgr.get() + "&dsName=" + dsName;
var form = $("<form>");
$("body").append(form);
if (url.indexOf('?') !== -1) {
var q = url.substr(url.indexOf('?') + 1);
var qs = q.split('&');
for (var i = 0; i < qs.length; i++) {
var p = qs[i];
var ps = p.split('=');
if (ps.length === 2) {
$('<input/>').attr('name', ps[0]).val(ps[1]).appendTo(form);
}
}
url = url.substring(0, url.indexOf('?'));
} else {
var input = $("<input>");
form.append(input);
}
form.attr({"style": "display : none", "target": "", "method": "post", "action": url});
form.submit();
form.remove();
2.効果プレビュー
帳票を保存し、改ページプレビューをクリックします。エクスポートの効果は下図のとおりです。
三.その他の説明
1.パラメータ付きのエクスポート
パラメータ付きにテンプレートをエクスポートしたいときは、パラメータパネルの中のパラメータを通してテンプレートを選択できます。カスタムボタンの設定は下図のとおりです。
その他の手順は本文第二章と同じです。コードは下図のとおりです。
var dsName = encodeURIComponent("ds1");
var url = "http://localhost:8075/webroot/decision/url/report/v10/direct/export" +"?sessionID=" + Report.SessionMgr.get() + "&dsName=" + dsName + "&area=" + a + "&province=" + b + "&city=" + c ;
var form = $("<form>");
$("body").append(form);
if (url.indexOf('?') !== -1) {
var q = url.substr(url.indexOf('?') + 1);
var qs = q.split('&');
for (var i = 0; i < qs.length; i++) {
var p = qs[i];
var ps = p.split('=');
if (ps.length === 2) {
$('<input/>').attr('name', ps[0]).val(ps[1]).appendTo(form);
}
}
url = url.substring(0, url.indexOf('?'));
} else {
var input = $("<input>");
form.append(input);
}
form.attr({"style": "display : none", "target": "", "method": "post", "action": url});
form.submit();
form.remove();