7

ReportViewer1 つのフォームとコントロールに固執し、実行時にさまざまなレポートとデータ ソースを割り当てたいと考えています。これに対する多様で複雑な解決策が、Google の簡単なチェックで明らかになったので、むしろここで質問するようになりました。どうすればこれを達成できますか?

4

2 に答える 2

6

ReportViewer コントロール、RDLC レポート、およびデータ ソースを備えたフォームが必要です。これを実装するにはいくつかの方法がある可能性がありますが、それぞれが特定のレポートを表示するメソッド (例: 、 など) を公開する「レポート マネージャー」クラスを持つことShowOrdersReport()ShowTimeSheetReport()できReportBaseますShow()。必要に応じてパラメーター...何が機能しても、基本的には次のようになります。

var reportForm = new ReportViewerForm(); // instantiate the form
// load the report definition into the viewer:
reportForm.reportViewer1.LocalReport.ReportEmbeddedResource = "Namespace.Report.rdlc";

// loading the data works great with a DataSet:
var data = _reportingDataSet.Tables[0];
// create the ReportDataSource with the report data:
var reportDataSource = new ReportDataSource("rdsReportDataSource", data);

reportForm.ShowReport(new[] { reportDataSource });

_reportingDataSetここで依存関係を注入します。パラメーター化されたストアド プロシージャを使用している場合は、DataSet を設定する前に、レポート パラメーターの入力を求める必要があります。

このShowReport()メソッドは、データ ソースを に追加し、指定したレポートを表示するLocalReport.DataSourcesを呼び出しRefreshReport()ます。

public void ShowReport(IEnumerable<ReportDataSource> dataSources)
{
    foreach (var dataSource in dataSources) 
        reportViewer1.LocalReport.DataSources.Add(dataSource);

    reportViewer1.RefreshReport();
}
于 2012-10-09T03:33:32.540 に答える
2

Crystal レポートを使用している場合は、[レポートの読み込み] ボタンをクリックしてこれを使用します CrystalReportViewer.ReportSource = ReportName

MS ReportViewer コントロールを使用している場合、レポートを表示するには 2 つの重要な手順が必要です

  1. レポート ファイル パスを ReportViewer に割り当てる
  2. データ ソースを設定する

たとえば、reportViewer1 という名前の ReportViewer コントロールは SomeReport.rdlc ファイルを表示する必要があり、次のコードが必要です (ボタンをクリックするとしましょう)。

this.reportViewer1.LocalReport.ReportPath = @"Add absolute path of rdlc file"//e.g. @"C:\SomeReport.rdlc" ;
this.reportViewer1.RefreshReport();

これは単純な例にすぎません。データベースからデータを表示する必要がある場合は、単純にするために静的レポートを使用しました。たとえば、RefreshReport を呼び出す前に datasource プロパティを割り当てるだけです。

this.reportViewer1.LocalReport.DataSources.Add(MyreportDataSource);

ここで、MyreportDataSource は ReportDataSource タイプのオブジェクトであり、任意の ADO.net DataTable を ReportDataSource オブジェクトに簡単に変換できます。

これだけの情報が役に立てば幸いです。詳細を確認したい場合は、この場所の非常に優れた記事を参照してください。

http://www.c-sharpcorner.com/UploadFile/robo60/StandaloneRDLCReports11142007183516PM/StandaloneRDLCReports.aspx

于 2012-09-26T10:49:35.800 に答える