web-dev-qa-db-ja.com

単一のバンドに複数の行があるときに、データオーバーフローで行をストレッチする

私の要件は、単一の「詳細」バンドに複数の行を持つようにバインドします。

現在、左端の列に静的テキストフィールド(色で強調表示されています)とその隣に3つのテキストデータフィールドがあります。

レポートに必要なのは、3つのバンドのいずれかのデータがオーバーフローすると、静的テキストバンドと3つのバンドの高さが伸び、次の行が伸びた行の下に「正しく」表示されることです。 「適切に」とは、次の行の要素の「トップ」値が同じで、同じ「行」に表示されることを意味します。

「Stretch with overflow」フラグを「true」に、「Position」を「float」に設定してみましたが、問題は次の行のデータが適切に配置されていないことです。

20
Rachcha

答えを見つけました。ソリューションの鍵は、行内の要素をグループ化することです。

  1. すべての静的テキストラベルを削除します。テキストを引用符で囲んで、代わりにテキストフィールドを使用します。他のテキストフィールドやデータフィールドとグループ化できます。
  2. 引用テキストフィールドと同じグループの引用テキストフィールドの後にすべてのデータフィールドを配置します。
  3. 次に、表示するすべての行で同じ操作を行います。個々の行の個別のグループ。

グループ内のすべての要素、またはすべてのグループのすべての要素を選択して、これを実行します。

  • 「位置」を「フロート」に設定します
  • 「ストレッチタイプ」を「最も高いオブジェクトに相対的」に設定します
  • [詳細がオーバーフローしたときに印刷する]チェックボックスをオンにします。
  • [オーバーフローでストレッチ]チェックボックスをオンにします。

物事を一緒に「伸ばす」ためにできることはそれだけです。

さて、バンドはこれらの引き伸ばされたディテールで動的に引き伸ばされなければなりません。バンドプロパティに移動し、[スプリットタイプ]を[デフォルト]に設定して、スプリットを許可します。これは私のためにトリックをしました。

31
Rachcha

誰かがこの問題に出くわし、上記の回答が機能しない場合。 xmlのルート要素を確認することをお勧めします。次の属性がある場合は削除します。

printOrder="Horizontal"

その後、上記の回答が機能するはずです。

同じものをグーグルで探して、誰かを救ってくれることを願っています。

私の場合、あなたがアドバイスしたとおりにやってもうまくいきませんでした。ソリューションを少し変更する必要がありました-オブジェクトをグループ化する代わりに「フレーム」を作成し、そのフレームに以前グループ化された要素を配置しました。 positionType = "Float"およびstretchType = "No stretch"そのフレームでに設定し、stretchType = "RelativeToTallestObject"をその子アイテムにに設定すると、すべて動作します。

3
murison