Ich erbte ein Programm, das in WPF MVVM Stil mit MVVM Light gemacht wurde. Ich brauche Berichte aus dem Programm aus Daten, die von einem SQL-Server in ViewModels gezogen wurde. Ich mache mir keine Sorgen darüber, MVVM beizubehalten, wenn ich es nicht muss, ich brauche es nur, um zu funktionieren.WPF mit einem Report Viewer Bindungsprobleme
Ich versuche, eines der bereits erstellten ViewModels als meine Daten für den Bericht zu verwenden. Bisher habe ich einen Bericht namens Report1.rdlc erstellt, die die Datenquelle CalibrationViewModel verwendet mit Dataset DataSet1
Ich habe eine Form DemoForm genannt, die auf eine Schaltfläche klicken im Haupt öffnet ein neues Fenster WPF-Seite mit einem Bericht-Viewer (reportViewer1) innerhalb davon. Dies wird verwendet, um den Bericht anzuzeigen. Der ReportViewer ist an CalibrationViewModelBindingSource gebunden.
Auf der DemoForm_Load ich habe
this.reportViewer1.RefreshReport();
Ich mag irgendwo fühlen im ein Datenbindung fehlt. Wenn ich versuche, den Bericht hochzuziehen, hat er nur den Header für die drei Felder, die ich in einer Tabelle auf der RDLC zu füllen versuchte. Ich denke, ich muss die DataSource des Berichts einstellen, wenn ich das neue Formular öffne, nur unsicher wie.
Ich habe diesen Teil zu dem Form_Load aber bin nicht sicher, was zu setze h ere - reportDataSource1.Value = Datensatz;/* Verwenden Sie hier Ihre Datenquelle */Meine Quelle ist ein viewModel-Objekt –
In Ihrem Bericht haben Sie eine Datenmenge "DataSet1" eines bestimmten Typs konfiguriert. Setzen Sie den Wert auf eine Instanz dieses Typs. Du hast "CalibrationViewModel" in der Frage erwähnt, also denke ich, dass es ein Beispiel dafür wäre. –
Wenn ich CalibrationViewModel1 als Wert verwende, wird ein Fehler angezeigt, der besagt, dass es im aktuellen Kontext nicht existiert. Dies ist, was ich in die form_load Microsoft.Reporting.WinForms.ReportDataSource reportDataSource1 = new Microsoft.Reporting.WinForms.ReportDataSource(); reportDataSource1.Name = "DataSet2"; reportDataSource1.Value = CalibrationViewModel1; reportViewer1.LocalReport.DataSources.Add (reportDataSource1); reportViewer1.RefreshReport(); –