4

状況: オブジェクト モデルのカスタム オブジェクトで .NET ReportViewer (ASP.NET、RDLC) を使用して、見栄えの良いレポート ページを設計しました。カスタム オブジェクトのコレクションを ReportViewer/RDLC にバインドすると、コントロールはコレクション内のオブジェクトに対してデータが格納されたレポート レイアウトを作成するというのが、私の根本的な (そして間違っている可能性もある) 仮定でした。

私の過去のレポートの経験は、MS-Access レポート エンジンでした。この場合、データ ソースをレポートにバインドすると、データ ソースの各レコードにレポート レイアウトが適用されます。たとえば、レポート レイアウトがページ全体にまたがる場合、結合されたレコードごとにデータが設定されたレポート ページが作成されます。

質問: 私の同僚は、.NET ReportViewer は私が説明した方法では機能しないと言っています。本当に?彼が間違っていると教えてください。解決策または回避策に関するガイダンスはありますか?

よろしくお願いします、-JR

注:明確な回答に応じて、元の質問のタイトルが変更されました。

4

2 に答える 2

4

簡単な答え:はい。ReportViewer は、説明した方法で動作できます。(あなたの同僚は間違っています。)

最初の行だけでなく、データ ソース内のすべての行を表示するには、いくつかの方法があります。私はここで説明されているリスト コントロールアプローチに最も精通していますが、サブレポートまたはネストされたデータ領域を使用 するマスター/詳細アプローチもあります。

厳密に言えば、この質問はカスタム オブジェクト コレクションではなく、複数のデータ行の表示に関するものです。「.NET ReportViewer の機能: カスタム オブジェクト コレクションへのバインド?」から質問のタイトルを編集することをお勧めします。「.NET ReportViewer の機能: 複数行の表示」と言うには?

レポートをデザインするときに、データ ソースのフィールドをレポート デザイナーに配置してレポートを表示すると、データセット全体ではなく 1 行のみが表示されることに気付きました。詳しく調べてみると、ReportDesigner は集計関数 First() をデータ フィールドにラップしています。これは ReportViewer のデフォルトの動作です。

やりたいことは、List コントロールを使用して、その中にデータ フィールド コントロールを配置することです。これで、すべてのフィールド行が表示されます。それはとても簡単です。

リストは、ReportViewer をうまく使用するための重要なコンポーネントです。それを読んでください。リストは、そのグループ式機能を使用し、さらにその中にリスト/テーブル コントロールをネストすることによって、より複雑に対応できます。

リソース:

別の投稿で述べたように、ReportViewer に最適な Web リソースの 1 つはGotReportViewerサイトです。そこには、List、Master-Detail などの使用に関する詳細が記載されています。

幸運を。

于 2009-12-13T18:11:57.060 に答える
1

ここで解決策を見つけることができるはずです: http://www.gotreportviewer.com/

カスタムクラス/コレクションのバインディングについて詳しくは、こちら http://www.gotreportviewer.com/objectdatasources/index.html

rdlc がレイアウトを作成するとは思いません。

于 2009-12-11T22:12:04.570 に答える