CrystalReportViewer を含むプレーンな asp.Net ページがあります。Page_Load メソッドで次のコードを使用して、レポートを表示します。
ReportDocument report = new ReportDocument();
TableLogOnInfos crtableLogoninfos = new TableLogOnInfos();
TableLogOnInfo crtableLogoninfo = new TableLogOnInfo();
ConnectionInfo crConnectionInfo = new ConnectionInfo();
Tables CrTables;
report.Load(Server.MapPath("Reports\\" + Request.Params[0]));
crConnectionInfo.ServerName = ConfigurationManager.AppSettings["ReportSQLServer"];
crConnectionInfo.DatabaseName = ConfigurationManager.AppSettings["ReportSQLDatabase"];
crConnectionInfo.UserID = ConfigurationManager.AppSettings["ReportSQLUsername"];
crConnectionInfo.Password = ConfigurationManager.AppSettings["ReportSQLPassword"];
CrTables = report.Database.Tables;
foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in CrTables)
{
crtableLogoninfo = CrTable.LogOnInfo;
crtableLogoninfo.ConnectionInfo = crConnectionInfo;
CrTable.ApplyLogOnInfo(crtableLogoninfo);
}
Session["Report"] = report;
rptViewer.ReportSource = report;
rptViewer.RefreshReport();
ただし、どのレポートをロードしても、次のように表示されます。
WinForms アプリでまったく同じロジックを使用してそこに CrystalReportsViewer を設定すると、レポートは期待どおりに表示されます。
レポートを正しく表示するために、asp.net Web フォームに欠けているものについて教えてください。