ホームページ  >  記事  >  ウェブフロントエンド  >  大規模なデータ セットの表示の問題を解決するための FineReport 階層化レポート戦略_html/css_WEB-ITnose

大規模なデータ セットの表示の問題を解決するための FineReport 階層化レポート戦略_html/css_WEB-ITnose

WBOY
WBOYオリジナル
2016-06-24 11:40:351368ブラウズ

この記事では、ページングによる大規模なデータ セットの表示の問題を解決するための例として、レポートへの入力を取り上げます。

実装のアイデアは、ブラウザーがレポート ページを適切に表示できるように、SQL でデータベース データの一部をフィルターすることです。 (データのセグメント化とステートメントには MYSQL を使用します。他のデータベースを使用したい場合は、FineReport のヘルプ ドキュメントを確認してください)

ステップ 1: fenye.cpt ファイルを開きます。

テンプレートのインターフェイスは次のとおりです

2 つの DS、データの一部、および非表示の行。

次のようにコンテンツの行を非表示にします

ここでのデータの機能については以下で説明します。

ds1 内容は以下の通りです

?

文の内容 SELECT * from aaa limit ${f},${p}

${f} 番目のジャンプから開始して ${ を選択することが目的ですp} data (この $p は表示されるページ数です。$f は次の式で計算できます ($page-1)*$p、mysql 制限のオフセットは 0 から始まります)。

テンプレート パラメータでは、デフォルト値を設定します

$P=20

$page=1;

これは、グローバル パラメータと同じです。プレビュー時にデータを確認することはできません。 template はい、ページが表示されるときに、パラメーターは URL を介して渡される必要があります。

ds2 の内容は次のとおりです

このステートメントは比較的単純で、データの総数を求め、それをページごとのページ数で割って総ページ数を取得するだけです。

レポート本文

最初の行のデータは、前のページ、次のページ、合計ページ数と現在のページ、および前のページと次のページを表示するために使用される / です。操作に使用するものは通常ここには表示されないので、最初にブロック(非表示)します。残りはユーザーデータの表示です。

レポートが通常のレポートと同じであることを示すために、他に何をする必要があるでしょうか?

ここでは、上の図の効果を実現するコードを記述する必要があります。

歯車をクリックしてレポートをプレビューします

ここで 7 つのカスタム ボタンと読み込み終了イベントを使用していることがわかります

読み込み終了イベントのコードは次のとおりです:

var toolbar = contentPane.toolbar;

var items = toolbar.options.items;

var CustomButton=items[2];//JQUERY はツールバーのボタンを取得します。items[2] は 3 番目のボタンを表し、次のように表示されます。テキストボックスボタン。

var inner =customButton.$table;

var btnWrapper = $("em", inner);

btnWrapper.html("");

//このボタンのプロパティを変更して、テキスト タイプになり、マウスが配置されるようにします。最後のアイコンが編集状態です。

var cellValue = contentPane.curLGP.getCellValue("D1");//セル D1 の値を取得するのは、現在のページである page です。

var $input = $("input", btnWrapper);

$input.val(cellValue);// COPY 可能な JQUERY メソッドを使用して、このテキスト コントロールをコピーします。

var total=contentPane.curLGP.getCellValue("C1");

if (total>parseInt(total)){total=parseInt(total)+1;

}

contentPane.toolbar.options.items[ 4].setText(total);

//5番目のコントロールに総ページ数を表示します。この値は小数の場合があるため、1を追加するかどうかを判断する必要があります。

contentPane.toolbar.options.items[3].setText(contentPane.curLGP.getCellValue("E1"));

// 4 番目のコントロールにスラッシュを書き込みます。

7 つのカスタム ボタン:

最初のホームページ:

コードは次のとおりです:

window.location.href="${servletURL}?reportlet=fenye.cpt&op=write&page=1";// fenye へのリンク.cpt、ページパラメータ=1、最初のページを表します。

2 つ前のページ:

コードは次のとおりです:

var page= $("tr[tridx=0]","div.content-container").children().eq(0).html ( ); // 最初の行の最初のセルの内容を取得します。

if(page==0)

{

this.setEnable(false);

alert("ページが指定された範囲を超えています");

}

else

window.location.href=" $ {servletURL}?reportlet=fenye.cpt&op=write&page="+page//1以上であれば正常にジャンプしますが、それ以外の場合は表示ページが指定範囲を超えるため、この制御設定は使用できません。ジャンプ可能 ジャンプできる 3 番目のページ:

varbar = contentpane.toolbar;

var Items = Toolbar.Options.items. $ table;

var btnWrapper = $("em", inner);

var $input = $("input", btnWrapper);

//このコントロールを取得します

$input.blur(function(){

var toolbar = contentPane.toolbar;

var items =toolbar.options.items; var $input = $("input", btnWrapper);

var page=$input.val();

var total =$("tr[tridx=0]" ,"div.content-container").children().eq(2).html();

if (total>parseInt(total)){total=parseInt(total)+1;

}

if (parseInt(page) > parseInt(total) || parseInt (page) < parseInt(1) )

{

alert("出力したページ数が指定範囲外になりました");

}

else

window.location.href="${servletURL} ?reportlet=fenye.cpt&op=write&page="+page

});

//フォーカスを失った後に入力された値が指定された範囲内にあるかどうか指定したページにジャンプする場合は、else の後の URL になります。それ以外の場合、出力ページは正しく表示されません。フォーカスを失うとは、別の場所をクリックするか、Tab キーをクリックすることを意味します。

4 番目のスラッシュ:

これはロード時に処理されます。ここでの処理は必要ありません。

5 番目の総ページ数:

これはロード時間で処理されます。ここでの処理は必要ありません。

次の 6 ページ目:

var page= $("tr[tridx=0]","div.content-container").children().eq(1).html();

var total=$ (" tr[tridx=0]","div.content-container").children().eq(2).html();

//JQURUY は次のページと総ページ数を取得します

if (total>parseInt (total)){total=parseInt(total)+1;
}
//ページの合計数がプラス 1 ではなく整数であるかどうかを判断します
if(parseInt(page) > parseInt(total))
{
this.setEnable (false);
alert("ページ数が指定された範囲を超えています");
}
else
window.location.href="${servletURL}?reportlet=fenye.cpt&op=write&page="+page
//次の場合 ページがこの範囲内にある場合、そこにジャンプします


このコントロールは使用できないため、出力は間違っています。
最後の 7 ページ目:
コードは次のとおりです:
var total=$("tr[tridx=0]","div.content-container").children().eq(2).html();
/ /総ページ数を取得します。
if (total>parseInt(total)){total=parseInt(total)+1;
}
window.location.href="${servletURL}?reportlet=fenye.cpt&op=write&page="+total
//判定総ページ数は整数でもプラス 1 でもなく、最後のページにジャンプします。
表示コントロールの名前をエイリアスに追加する必要があります







声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。