2016-06-28 3 views
3

私は、Visual Studio 2015とEntity Frameworkのそれは、WindowsFormsHostを使用してローカルレポートはReports.xamlビュー(ユーザーコントロール)内で実行されているいくつかのSSRSを持っている必要があります6を使用してMVVMライトWPFアプリを構築していますコントロール:this MSDN articleの指示に従い定義SSRSレポートのデータセットとデータソースを動的

<WindowsFormsHost x:Name="WindowsFormsHost"> 
    <rv:ReportViewer x:Name="ReportViewer" /> 
</WindowsFormsHost> 

、私は、埋め込まれたデータソースとデータセットを含むレポートを作成しました。ただし、ReportViewerコントロールで表示するレポートをユーザーが選択できるようにするには、アプリケーションにComboBoxのレポート名が必要です。ここで

は私がやりたいものだ:

  1. は、適切な列名とレイアウト情報
  2. とのそれぞれが呼び出すコードでデータセットを切り替えることができる、RDLCレポートファイルの束を持っていますEntity Frameworkの

を経由して別のストアドプロシージャ私がRDLCファイルから全体DataSourcesDataSetsタグを削除手動で試してみたが、それはそれを吹くと、Visual Studioが無効なXMLエラーで戻ってきます。

XMLに埋め込まれたデータセット/データソースなしでレポートを作成することはできますか?次に、RDLC XMLはレイアウトを提供し、データはコードビハインドから来るでしょうか?

ここで私は、MSDNの記事から私のReports.xaml.csコードビハインドで試してみたものだが、それは埋め込まれたデータセットとデータソース使用しています:

public MainWindow() 
{ 
    InitializeComponent(); 
    Messenger.Default.Register<string>(this, "RunReport", RunReport); 
} 

private void RunReport(string reportName) 
{ 
    Microsoft.Reporting.WinForms.ReportDataSource reportDataSource1 = 
     new Microsoft.Reporting.WinForms.ReportDataSource(); 
    AdventureWorks2008R2DataSet dataset = new AdventureWorks2008R2DataSet(); 

    dataset.BeginInit(); 

    //Name of the report dataset in our .RDLC file 
    reportDataSource1.Name = "DataSet1"; 
    reportDataSource1.Value = dataset.SalesOrderDetail; 
    this._reportViewer.LocalReport.DataSources.Add(reportDataSource1); 
    this._reportViewer.LocalReport.ReportEmbeddedResource = 
     "<VSProjectName>.Report1.rdlc"; 

    dataset.EndInit(); 

    //fill data into adventureWorksDataSet 
    AdventureWorks2008R2DataSetTableAdapters.SalesOrderDetailTableAdapter salesOrderDetailTableAdapter = 
     new AdventureWorks2008R2DataSetTableAdapters.SalesOrderDetailTableAdapter(); 
    salesOrderDetailTableAdapter.ClearBeforeFill = true; 
    salesOrderDetailTableAdapter.Fill(dataset.SalesOrderDetail); 

    _reportViewer.RefreshReport(); 
} 

答えて

1

を私はこれまでより良いアプローチは、レポートを聞かせすることだと思います渡すパラメーター値に基づいて実行するストアド・プロシージャーを決定します。レポートが行うことを意図したものをレポートにさせ、データを取得して表示します。コードは、実行するレポートと実行するタイミングを処理します。

あなたが描くアプローチは、地獄のような報告を複雑にする良い方法のような匂いです。あなたのために、そしてあなたの後にレポートを管理しなければならない人のために、それを簡単にしておきなさい。

関連する問題