1

レポートビューアコントロールを使用するのは初めてです。

現在レポートを作成している方法は、ストアドプロシージャを呼び出し、入力パラメータを挿入してデータベース内のテーブルをクエリし、行のリストを返すことです。

行がデータテーブルに挿入され、データテーブルが返されます。

データテーブルは、ユーザーが表示できるグリッドビューにバインドされています。

今私の問題....

グリッドビューの代わりにレポートビューアを使用してデータを表示し、ユーザーがデータを簡単にエクスポートして、それを使用して素敵なグラフを表示できるようにしたいと思います。

ストアドプロシージャは、プロジェクトにあるクラスであるデータアクセスクラスから呼び出されます(フォルダーにはありません)。

レポートビューアを作成してデータソースを要求されたときに、データアクセスクラスが表示されません。ストアドプロシージャ関数から結果(返されたデータテーブル)を取得して、レポートビューアに挿入するにはどうすればよいですか?

4

2 に答える 2

1

プログラマティックアプローチを試すことができます。

//Load Report Definition.
// From File.
ReportViewer1.LocalReport.ReportPath = "C:\\Report.rdlc";
//Load Report Data.
ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", data));
//Refresh Control.
ReportViewer1.LocalReport.Refresh();

データを含むDataTableがある場合は、それをDataSourceとしてReportViewerに追加するだけです。「DataSet1」は、現在レポートビューアにロードされているレポート内のデータセットの名前です。

したがって、Entity Frameworkを使用している場合は、次のようになります。

//Create Connection.
Entities db = new Entities();

//Get the Data Using the query supplied (Where Entities.SomeObject is the Entity to retrieve data).
IQueryable<Object> data = db.CreateQuery<Object>("SELECT VALUE c FROM Entities.SomeObject AS c WHERE c.SomeValue> 0");

//Reset Control. Doesn't Usually work if this is skipped for some reason.
ReportViewer1.Reset();
//Load Report Definition.
// From File.
ReportViewer1.LocalReport.ReportPath = "C:\\Report.rdlc";
//Load Report Data.
ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", data));
//Refresh Control.
ReportViewer1.LocalReport.Refresh();

同じことがDataTableでも機能するはずです。

于 2012-11-07T20:35:59.073 に答える
0

レポートビューアにデータテーブルにアクセスさせるために私がやったことは、プロジェクトにデータセットを追加することでした。そのデータセット内に、コードで生成されたデータテーブルと同じ列名でデータテーブルを作成する必要がありました。そこからレポートに移動し、テーブルを追加して、データセット内に作成されたデータテーブルに向けました。次に、私のコードで、Shelbyの上記のコードを使用してプログラムでデータテーブルを追加しました。

于 2012-11-08T18:47:16.217 に答える