SSRSレポートをWebフォームに統合することは可能ですか..私を動かし続けるのに十分な例です.
3 に答える
絶対にそうです。
探しているのは、Microsoft.Reporting.WebFormsアセンブリにあるReportViewerコントロールです。これにより、Webフォームにコントロールを配置して、レポートパラメータを設定したりレポートを取得したりするためのインターフェイスをユーザーに提供できます。
または、すべてのパラメータを自分で設定し、必要な形式でレポートを出力することもできます。アプリケーションでPDFを出力するために使用します。
たとえば、これは、レポートの1つにreportviewerオブジェクトを設定し、PDFを取得して、それをユーザーに送り返す方法です。特定のコードブロックはWebハンドラーです。
public void ProcessRequest(HttpContext context)
{
string report = null;
int managerId = -1;
int planId = -1;
GetParametersFromSession(context.Session, out report, out managerId, out planId);
if (report == null || managerId == -1 || planId == -1)
{
return;
}
CultureInfo currentCulture = Thread.CurrentThread.CurrentCulture;
List<ReportParameter> parameters = new List<ReportParameter>();
parameters.Add(new ReportParameter("Prefix", report));
parameters.Add(new ReportParameter("ManagerId", managerId.ToString()));
parameters.Add(new ReportParameter("ActionPlanId", planId.ToString()));
string language = Thread.CurrentThread.CurrentCulture.Name;
language = String.Format("{0}_{1}", language.Substring(0, 2), language.Substring(3, 2).ToLower());
parameters.Add(new ReportParameter("Lang", language));
ReportViewer rv = new ReportViewer();
rv.ProcessingMode = ProcessingMode.Remote;
rv.ServerReport.ReportServerUrl = new Uri(ConfigurationManager.AppSettings["ReportServer"]);
if (ConfigurationManager.AppSettings["DbYear"] == "2007")
{
rv.ServerReport.ReportPath = "/ActionPlanning/Plan";
}
else
{
rv.ServerReport.ReportPath = String.Format("/ActionPlanning{0}/Plan", ConfigurationManager.AppSettings["DbYear"]);
}
rv.ServerReport.SetParameters(parameters);
string mimeType = null;
string encoding = null;
string extension = null;
string[] streamIds = null;
Warning[] warnings = null;
byte[] output = rv.ServerReport.Render("pdf", null, out mimeType, out encoding, out extension, out streamIds, out warnings);
context.Response.ContentType = mimeType;
context.Response.BinaryWrite(output);
}
URLアクセス方式を使用しないと、パラメータ選択などの一部の機能が失われることに注意してください。
レポートサーバーのURLアクセスは、HTMLビューアとレポートツールバーの拡張機能をサポートします。SOAP APIは、このタイプのレンダリングされたレポートをサポートしていません。SOAPを使用してレポートをレンダリングする場合は、独自のレポートツールバーを設計および開発する必要があります。
これは、特定のファイル形式でレポート出力を aspx ページにレンダリングする方法を説明するナレッジ ベース記事です。