2016-06-28 5 views
3

내가 비주얼 스튜디오 2015 엔티티 프레임 워크 그것은 WindowsFormsHost를 사용하여 지역 보고서는 Reports.xaml 뷰 (사용자 제어) 내에서 실행되는 일부 SSRS을 가질 필요가 6을 사용하여 MVVM 라이트 WPF 응용 프로그램을 짓고 있어요 제어 :정의 SSRS 보고서의 데이터 집합 및 데이터 소스를 동적으로

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

this MSDN article의 지침에 따라, 나는 포함 된 데이터 원본 및 데이터 세트와 보고서를 만들었습니다. 그러나 이제 사용자가 ReportViewer 컨트롤에 표시 할 보고서를 선택할 수 있도록 앱에 ComboBox 개의 보고서 이름이 있어야합니다.

  1. 이 RDLC 보고서 파일들을 가지고, 적절한 열 이름과 레이아웃 정보와 각
  2. 것은를 호출하는 코드에서 데이터 집합을 전환 할 수 있습니다 : 여기

    는 내가하고 싶은거야 엔티티 프레임 워크 내가 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

나는이에 대한 더 나은 방법이 보고서를 수 있도록하는 것입니다 생각 전달할 매개 변수 값을 기반으로 실행할 저장 프로 시저를 결정하십시오. 보고서를 통해 보고서 작성, 데이터 표시 및 표시 작업을 수행하십시오. 코드는 언제 어떤 보고서를 실행할지를 처리합니다.

당신이 묘사하는 접근법은 지독한보고를 복잡하게 만드는 좋은 방법과 같은 냄새를 풍깁니다. 당신을 위해서 간단하게하십시오, 그리고 당신 후에 보고서를 관리해야하는 사람을 위해.

관련 문제