有人可以告诉我是否可以加载外部CrystalReports(2008).rpt文件? 我现在嵌入它们,所以它们是用我的核心编译的。
如果我可以更改报表布局而不必重新编译任何内容,那将是很好的。这可能吗?
感谢。
答案 0 :(得分:2)
是的,这是可能的。在以下示例中,可以上载.rpt文件,然后将其设置为标准ASP.NET CrystalReportViewer
控件的源(在本例中为reportViewer
)。
using CrystalDecisions.CrystalReports.Engine;
...
ReportDocument document = new ReportDocument();
document.Load(reportPath); //"C:\\path\\to\\report\\file.rpt";
reportViewer.ReportSource = document;
reportViewer.RefreshReport();
如果.rpt文件中嵌入的数据库凭据不正确,可以按如下方式设置:
using CrystalDecisions.Shared;
...
private void ViewReport()
{
ConnectionInfo connInfo = new ConnectionInfo();
connInfo.ServerName = "dbservername";
connInfo.DatabaseName = "dbname";
connInfo.UserID = "dbusername";
connInfo.Password = "dbpassword";
reportViewer.ReportSource = GetReportSource(connInfo);
reportViewer.RefreshReport();
}
private ReportDocument GetReportSource(ConnectionInfo connInfo)
{
ReportDocument document = new ReportDocument();
document.Load(reportPath); //"C:\\path\\to\\report\\file.rpt";
TableLogOnInfos logonInfos = new TableLogOnInfos();
TableLogOnInfo logonInfo = new TableLogOnInfo();
Tables tables;
tables = document.Database.Tables;
foreach(CrystalDecisions.CrystalReports.Engine.Table table in tables)
{
logonInfo = table.LogOnInfo;
logonInfo.ConnectionInfo = connInfo;
table.ApplyLogOnInfo(logonInfo);
}
return document;
}