2

BIRT レポートの最初のページに 1 つのマスター ページ ヘッダーを配置し、次のページに別のマスター ページ ヘッダーを配置する必要があります。3.7.1 バージョンを使用しています。

  1. マスター ページ ヘッダーに 2 行のグリッドを挿入しました。
  2. 各行に 1 つの新しいグリッドを配置しました。最初のページ ヘッダーの最初のネストされたグリッド、次のページ ヘッダーの 2 番目のネストされたグリッド。

  3. onRender スクリプトを設定します。

    //first nested grid
    if( pageNumber > 1 ){
    this.getStyle().display = "none";
    }
    //second nested grid
    if( pageNumber == 1 ){
    this.getStyle().display = "none";
    }else{
    this.getStyle().display = "block";
    }
    

これは、JDBC データ ソースのサンプル データベースで問題なく動作します。しかし、XML データ ソースが必要ですが、それではまったく機能しません。サンプル データベース テーブルでは onRender イベントがすべてのページで呼び出されるように見えますが、私の XML データ ソースでは 1 回しか呼び出されません。

この不可解な問題を解決するのを手伝っていただければ幸いです。

えりさ

4

2 に答える 2

1

dataSource が何であるかは重要ではありません。ただし、念のためテストしましたが、XML ソースを使用している場合はうまくいきました。私が考えることができる唯一のことは、自動レイアウトを使用していて、テーブルの改ページ間隔が 0 であることです。PDF に出力すると、毎回ページ 1 のヘッダーだけが表示されます。あなたが持っているデータソースは関係ありません。あなたはこれを見てみるかもしれません。

于 2013-03-05T23:18:19.320 に答える
0

これを行う場合:

P1: ヘッダ Grid1 P2...: ヘッダ Grid2

(あなたの特別なケースでは、Grid1はR1、R2で、Grid2はR2です)

トリックがあります:

マスター ページのプロパティで、最初のページにページ ヘッダーを表示せず、Grid2 をページ ヘッダーに配置するように BIRT に指示します。

ただし、BIRT は依然としてヘッダー用のスペースを予約しています。

Grid1 を最初のオブジェクトとしてレポート レイアウトに追加し、それに応じて Grid1 に負の余白を使用して上に移動します。

注: これは PDF エミッターでは機能しますが、Word エミッターでは機能しません。

于 2014-02-10T08:24:13.873 に答える