チュートリアル : ローカル処理モードでのビジネス オブジェクト データ ソースと ReportViewer Windows フォーム コントロールの使用
このチュートリアルでは、Microsoft Visual Studio 2008 Windows アプリケーションのレポートでビジネス オブジェクトを使用してオブジェクト データ ソースを使用する方法について説明します。ビジネス オブジェクトとオブジェクト データ ソースの詳細については、「ビジネス オブジェクトへのバインディング」を参照してください。
Visual Studio Windows アプリケーション プロジェクトにレポートを追加するには、次の手順を実行します。この例では、Microsoft Visual C# でアプリケーションを作成します。
新しい Windows アプリケーション プロジェクトの作成
[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。
[新しいプロジェクト] ダイアログ ボックスの [Visual C#] で、Windows アプリケーション テンプレートを選択します。
プロジェクト名として「BusinessObject」と入力し、[OK] をクリックします。
データ ソースとして使用するビジネス オブジェクトの作成
[プロジェクト] メニューの [新しい項目の追加] をクリックします。
[新しい項目の追加] ダイアログ ボックスで [クラス] を選択し、ファイル名として「BusinessObjects.cs」と入力して、[追加] をクリックします。新しいファイルがプロジェクトに追加され、Visual Studio で自動的に開きます。
BusinessObjects.cs の既定のコードを、次のコードに置換します。
using System; using System.Collections.Generic; // Define the Business Object "Product" with two public properties // of simple datatypes. public class Product { private string m_name; private int m_price; public Product(string name, int price) { m_name = name; m_price = price; } public string Name { get { return m_name; } } public int Price { get { return m_price; } } } // Define Business Object "Merchant" that provides a // GetProducts method that returns a collection of // Product objects. public class Merchant { private List<Product> m_products; public Merchant() { m_products = new List<Product>(); m_products.Add(new Product("Pen", 25)); m_products.Add(new Product("Pencil", 30)); m_products.Add(new Product("Notebook", 15)); } public List<Product> GetProducts() { return m_products; } }
[プロジェクト] メニューの [ソリューションのビルド] をクリックします。これにより、オブジェクトのアセンブリが作成され、レポートのデータ ソースとして後で使用できるようになります。
プロジェクトへのレポートの追加
プロジェクトまたはプロジェクト項目がソリューション エクスプローラで選択されていることを確認します。
[プロジェクト] メニューの [新しい項目の追加] をクリックします。
[新しい項目の追加] ダイアログ ボックスで [レポート] をクリックします。レポート名を入力して、[追加] をクリックします。レポートがプロジェクトに追加され、レポート デザイナで自動的に開きます。レポート名は、既定で Report1.rdlc になります。
データ ソース構成ウィザードを使用したデータ ソースの作成
プロジェクトまたはプロジェクト項目がソリューション エクスプローラで選択されていることを確認します。
[データ] メニューの [新しいデータ ソースの追加] をクリックします。これにより、データ ソース構成ウィザードが起動します。
[データ ソースの種類を選択] ページで、[オブジェクト] を選択して [次へ] をクリックします。
データ ソース構成ウィザードに、プロジェクトの既存のクラスが一覧表示されます。一覧に [Product] が表示されるまで [BusinessObjects] のクラス階層を展開します。[Product] を選択して [次へ] をクリックし、[完了] をクリックします。
ウィザードが閉じると、新しいデータ ソース オブジェクトが [データ ソース] ウィンドウに表示されます。
レポートのデザイン
レポートをデザイン モードで開いた状態で、ツールボックスを開きます。ツールボックスから、テーブル コントロールをレポートにドラッグします。レポートのデザイン ビュー ウィンドウにテーブル コントロールが表示されます。点線の背景はレポート本文の寸法を表し、テーブル コントロールのサイズと位置は変更することができます。
[データ ソース] ウィンドウから、[Product] データ ソースの [Name] フィールドをテーブルの詳細行の最初の列にドラッグします。詳細行は中央の行です。詳細行を指定すると、ヘッダー行が自動的に入力されます。
[!メモ]
[データ ソース] ウィンドウが表示されていない場合は、[データ] メニューの [データ ソースの表示] をクリックします。
[Price] フィールドを 2 列目の詳細行にドラッグして、[Name] フィールドの横になるようにします。必要に応じて、左側のテーブル ヘッダー アイコンをクリックしてテーブルのヘッダー行を選択し、太字フォント スタイルを適用します。
使用されていない 3 番目の列を削除します。3 番目の列をクリックして、ヘッダー バーをクリックし、Del キーを押します。
レポートにタイトルを追加するには、ツールボックスを開いて、テキスト ボックス コントロールをレポートにドラッグします。テキスト ボックスをテーブルの上部に配置します。レポート名として「Products」と入力します。
(省略可) フォント サイズとフォント スタイルをテキストに適用して、タイトルが目立つようにします。
レポートへの ReportViewer コントロールの追加
自動的に生成された Windows アプリケーション フォームをデザイン ビューで選択します。フォーム名は、既定で Form1.cs になっています。
ツールボックスを開きます。ツールボックスで [データ] ノードを展開し、[ReportViewer] アイコンをフォームにドラッグします。フォームを展開し、必要に応じて ReportViewer の位置を変更します。
ReportViewer コントロールを選択し、右上隅の三角形をクリックして、スマート タグ パネルを開きます。[レポートの選択] ドロップダウン リストをクリックし、デザインしたレポートを選択します。レポート名は、既定で Report1.rdlc になっています。レポートで使用されている各オブジェクト データ ソースに対応して、BindingSource が自動的に作成されます。
BindingSource オブジェクトへのデータ ソース インスタンスの指定
Visual Studio フォームを右クリックして、ショートカット メニューから [コードの表示] をクリックします。
Form1.cs で、クラスの先頭に次のコードを追加します。
public partial class Form1 : Form {
ステートメントの後、コンストラクタの前で最初の行を使用できます。// Instantiate the Merchant class. private Merchant m_merchant = new Merchant();
Form1_Load() メソッドで、
RefreshReport
呼び出しの前に、最初の行として次のコードを追加します。// Bind the Product collection to the DataSource. this.ProductBindingSource.DataSource = m_merchant.GetProducts();
アプリケーションの実行
- F5 キーを押してアプリケーションを実行し、レポートを表示します。
参照
リファレンス
Microsoft.Reporting.WinForms.ReportViewer.Drillthrough
Microsoft.Reporting.WinForms.LocalReport.SubreportProcessing
Microsoft.Reporting.WebForms.ReportViewer.Drillthrough
Microsoft.Reporting.WebForms.LocalReport.SubreportProcessing
概念
ReportViewer タスクのスマート タグ パネルの使用