2012-02-28 8 views
1

いくつかのWCF Webサービスを提供するC#アプリケーションと、それを消費するMVC 2 Webアプリケーションがあります。 Webアプリケーションは、WebForms ReportViewerを使用して、Webサービスの既存または新規の操作に基づいて多数のレポートを提供する予定です。 RDLCファイルに使用されているレポートデザイナーツールを使用する必要があります。 VS 2010を使用し、Azureに展開しています。Visual Studio 2010を使用してASP.NET MVC2用のWCFデータソースを使用してRDL(C)を作成しますか?

私はこれを行う方法を探していましたが、多くの進歩はありませんでした。

は、これを達成するには、2つのルートがあるように思える:

  1. 使用レポートビューアーローカルモードで - Webアプリケーションの一部としてRDLCsを作成し、ローカル・データ・ソースを使用し、いずれかのXML、WebサービスからのフィードWebアプリケーションの一部であるオブジェクト(おそらく、WebサービスがWeb参照としてプロジェクトに追加されたときに作成されたクライアントからのものです)。

  2. SSRSレポートサーバーからReportViewerショーレポートを取得します。 RDLにはWCFサービスを含むXMLデータソースがあるようです。

最初は、私は、我々は他の要件を満たすために、レポートサーバーをセットアップするの余分なインフラを必要としているか分からない、特にとして、単純になります。しかし、私は単にXMLまたはオブジェクトデータソースのいずれかに接続できませんでした。

2番目の方法は、追加されたインフラストラクチャに加えていくつかの問題を抱えていると思われます。XML接続もここでは動作しませんが、もう少し読んで試行錯誤してくださいそこ。また、このタイプのレポートをサポートするVisual Studio 2010ツールはありません.SQL Server Business Intelligence Development Studioで作成する必要があります。これはVS 2008の味です。バージョン管理、ビルド、および展開にレポートを含めることができるように、このセットアップをTFS 2010で使用するためにはかなりの余分な作業があります。

(WebフォームをMVCアプリケーションに統合するという複雑なこともありますが、それは管理しやすいと思います)。

これらの要件に対する他のアプローチの提案は、最も高く評価されます。 これがうまくいくなら、あなたのやったことを聞いて偉大になるでしょう。

答えて

1

ReportViewerをローカルモードで使用でき、私たちが持っていた要件を合理的に満たすことができました。私はこの質問を見ている誰もが同様の問題を抱えている場合にこれを行う方法を説明します。

概要:

  • レポートのデータアクセスオブジェクトを作成します。
  • レポート(RDLCファイル)を作成します。
  • ReportViewer
    コントロールを使用してレポートを表示するWebフォームを作成します。

非常に似ているが目的が異なるように見えるレポートを作成するには、2つの段階があります。 RDLCファイルを作成するときには、データ・オブジェクトに対するレポート・コントロール(表、リストなど)のプレースホルダをデータ要素に関連付けることができるデータ・オブジェクトへの「設計時」バインディングがあります。その後、WebFormにReportViewerを追加すると、そのレポートをデータオブジェクトのインスタンスに接続してレポートデータを取り出す別のデータバインディングが作成されます。

I.データアクセスオブジェクトを作成します。

以下のステップII.5では、このオブジェクトの名前空間を選択する必要があります。ここでは、Visual Studioにはこのための名前空間があらかじめ用意されており、この中で作業しなければならないということがわかりました。幸いなことに、あなたのMVCプロジェクトのモデルの名前空間は、これを置く論理的な場所のようです。実際には、子名前空間MyProjectWebRole.Models.ReportModelsを作成しました。これはVisual Studioでも問題ありません。

ここに私のアクセスオブジェクトの概要です:

namespace MyProjectWebRole.Models.ReportModels 
{ 
    public class DataThing 
    { 
     public DataThing() 
     { 
     } 

     public int ThingId{ get; set; } 
     public decimal ThingCost { get; set; } 
     public DateTime ThingAcquisitionDate { get; set; } 
     public string ThingType { get; set; } 

     public static IList<DataThing> GetEveryThing() 
     { 

      ServiceClient client = null; 
      ThingsRequest request = null; 
      ThingsResponse response = null; 
      string errorID = ""; 

      IList<DataThing> things = new List<DataThing>(); 

       client = new ServiceClient(); 
       request = new ThingsRequest(); 
       response = client.ThingsReport(request); 
      } 

      foreach (ResponseThing rt in response.Things) 
      { 
     DataThing theThing = new DataThing(); 
     theThing.ThingId = rt.Id; 
     theThing.ThingCost = rt.Cost; 
     theThing.ThingAcquisitionDate = rt.Date; 
     theThing.ThingType = rt.Type; 
       things.Add(theThing); 
      } 

      if (client != null) client.Close(); 
      return things 
     } 
    } 
} 

ServiceClientThingsRequestThingsResponseあなたがServiceReferenceを追加するときが定義されているをResponseThingデータ原産地のウェブサービスnates。

II。レポートを作成します。プロジェクトフォルダのコンテキストメニューから :「追加」の

  1. クリック - >「新しい項目...」
  2. 左ペインに設定されている「レポート」テンプレートを選択します。
  3. [レポート]テンプレートを選択します。新しいレポートのデザイン面が表示されます。
  4. ツールボックスからコントロールをドラッグして、レポートをデザインします。初めて あなたは、データセット(テーブル、マトリックス、ゲージ、 グラフ、リスト)データセットのプロパティ]ダイアログが開きますが必要となるコントロールをドラッグ:
  5. データsource.Theを選択して「データソース」ドロップダウンがで 名前空間を示していますデータソースには名前を付けることができます。データアクセスオブジェクトを定義した を選択します。
  6. データセットの選択:「使用可能なデータセット」ドロップダウンには、選択したデータソース名前空間の適切なメソッド がすべて含まれています。このためのデータアクセスオブジェクトのメソッド は、選択肢の中で である必要があります。このレポートに必要なものを選択します。利用可能になるデータ が「フィールド」リストに表示されます。
  7. データセットのセットアップをトリガーするレポートコントロールを設定します。 フィールドのデータセットを、レポートに追加されたコントロールの のプレースホルダとして使用できるようになりました。
  8. 必要なその他のレポートコントロールを含めて構成して、レポート定義を完成させます。

3。レポートを表示するWebフォームを作成します。

  1. Webフォームが作成されたら、(ツールボックスの AJAX拡張セクションから)ScriptManagerコントロールを追加します。
  2. は、Webフォームのデザインビューで
  3. (ツールボックスの報告 セクションから)WebフォームにReportViewerコントロールを追加してアクティブにReportViewerコントロール をクリックしてください。
  4. スマートタグSmartTagをクリックして、[ReportViewerタスク]ダイアログを開きます。
  5. [レポートの選択]プルダウンを開き、上で設計した レポートのRDLCファイルを選択します。
  6. [データソースの選択]をクリックすると、[データソースの選択]ダイアログが開きます。 パートIIで作成し名前を付けたデータセットは、 "レポートデータソース"として表示され、 "データソースインスタンス"の下にドロップダウンボックスが表示されます。
  7. データソースのドロップダウンを開き、 が「
  8. 」という選択肢をクリックすると、「データソース構成ウィザード」が表示されます。 「オブジェクト」データソースアイコンをクリックし、必要に応じて、提供されているデフォルトのIDよりも意味のあるIDを にします。
  9. これで、作成した新しいオブジェクト のデータソースの[データソースの設定]ダイアログが表示されます。 「あなたのビジネスオブジェクトを選択し、」 ドロップダウンでは、あなたは再び
  10. は、「選択」タブを選択し、[次へ]をクリックし、MyProjectWebRole.Models.ReportModels.DataThingを選択します。
  11. また、レポートにバインドするデータを に提供するビジネスオブジェクトのメソッドを選択します。

これはです。があります。 WebFormを参照すると、Webサービスにクエリを行い、提供されたデータをレポートに埋め込む必要があります。

これに対する追加や修正は大変ありがたいです!

関連する問題