2013-07-17 15 views
8

Dodałem ReportViewer w aplikacji WPF za pośrednictwem projektanta XAML mojego głównego okna i chciałbym dodać do niego istniejący plik rdlc.Jak dodać plik rdlc do ReportViewer w projektach WPF

Chciałbym, aby mój reportviewer pokazał pusty plik rdlc (bez parametrów) przy starcie, a później po wybraniu wiersza z mojego datagridu (związanego z zaznaczeniem observablecollection) odpowiednio zmienił parametry i pokazał wypełnioną definicję raportu pustego.

Zrobię przycisk z wybranym wierszem jako parametr parametrów i odpowiednie zdarzenia i wszystko, po prostu muszę mieć możliwość przekazania danych do raportu. Zdaję sobie sprawę, że nie jest to proste pytanie, więc postaram się uprościć:

  1. Jak dodać istniejący plik RDLC do ReportViewer (MVVM WPF)?
  2. Naciskam przycisk -> odpowiednie polecenie pobiera element z mojego zbioru obserwowalnego jako parametr (wiersz w moim datagridzie) -> Jak przekazać części danych tego przedmiotu do niezapełnionych (lub zastąpić, jeśli wypełnione oczywiście) części raport?

Mam nadzieję, że wszystko było jasne. Dzięki za odpowiedź z góry!

Odpowiedz

3

Po skonfigurowaniu metody initilizeMethod prawidłową ścieżką do raportu i nazwy zestawu danych należy wpisać coś takiego.

private void initializeReport() 
     { 
      this.mform_components = new System.ComponentModel.Container(); 
      Microsoft.Reporting.WinForms.ReportDataSource reportDataSource1 = new Microsoft.Reporting.WinForms.ReportDataSource(); 

      this.ProductBindingSource = new System.Windows.Forms.BindingSource(this.mform_components); 
      ((System.ComponentModel.ISupportInitialize)(this.ProductBindingSource)).BeginInit(); 

      reportDataSource1.Name = "DataSet4"; 
      reportDataSource1.Value = this.ProductBindingSource; 

      this.viewerInstance.LocalReport.DataSources.Add(reportDataSource1); 
      this.viewerInstance.LocalReport.ReportEmbeddedResource = "YourReport.rdlc"; 
      this.viewerInstance.ZoomPercent = 95; 
      this.windowsFormsHost1.Width = 680; 

      ((System.ComponentModel.ISupportInitialize)(this.ProductBindingSource)).EndInit(); 
    } 

Jedyne, co należy pozostawić, to określenie obiektu, który chcesz umieścić w swoim raporcie.

private System.Windows.Forms.BindingSource ProductBindingSource; 
     private void startReport() 
     { 
      YourClass item = (YourClass)DataGridView.SelectedItem; 
      this.ProductBindingSource.DataSource = item; 

      this.viewerInstance.RefreshReport(); 
      this.viewerInstance.Refresh(); 
     } 
+0

O mój Boże! Działa jak marzenie! Dziękuję za zakończenie mojego cierpienia! –

+0

Żadnych problemów :) – Labrinths

1

A rozwijało się w podobnym stylu kilka miesięcy temu. Jest jednak dużo kodu, aby opublikować tutaj, ale spójrz na jego wypełnioną próbkę z kodem źródłowym. Advanced-Report-Viewver Codeproject

+0

Dziękuję, to było bardzo pomocne! –

+0

Czy mogę uzyskać inne pytanie? Oto wydruk mojego raportu: [link] (http://s8.postimg.org/3nahbg285/report.jpg) Jak mogę przekazać dane z mojej "ObservableCollection" do podświetlonej części mojego DataSet4 i ostatecznie do każdej części ? Dzięki! –

Powiązane problemy