10

ReportViewerメイン ウィンドウのデザイナーを使用してWPFアプリに を追加XAMLしました。既存の rdlc ファイルをアプリに追加したいと考えています。

起動時にレポートビューアーに空の rdlc ファイル (パラメーターなし) を表示し、後でデータグリッド (observablecollection にバインドされている) から行を選択すると、それに応じてパラメーターを変更し、空のレポート定義ではなく、入力されたレポート定義を表示するようにしたいと考えています。 .

選択した行をコマンド パラメータとしてボタンを作成し、関連するイベントなどすべてをレポートに渡す必要があります。簡単な質問ではないことはわかっているので、簡単に説明します。

  1. 既存の rdlc ファイルを ReportViewer (MVVM、WPF) に追加する方法は?
  2. ボタンを押します->関連するコマンドは、observablecollectionからパラメーター(データグリッドの行)としてアイテムを取得します->このアイテムのデータ部分をレポートの未記入の(またはもちろん記入済みの場合は上書き)部分に渡す方法は?

私がはっきりしていることを願っています。事前に答えてくれてありがとう!

4

2 に答える 2

3

レポートへの正しいパスとデータセット名を次のように指定してinitilizeMethodを設定した後。

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();
    }

残す必要があるのは、レポートで使用するオブジェクトを指定することだけです。

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

            this.viewerInstance.RefreshReport();
            this.viewerInstance.Refresh();
        }
于 2013-07-18T19:04:03.463 に答える
1

Aは数ヶ月前にそのようなものを開発していました。ただし、ここに投稿するにはコードが多すぎますが、この完成したサンプルとソース コードをご覧ください。 高度なレポート ビューバー Codeproject

于 2013-07-17T21:23:17.127 に答える