我在Win Form应用程序中有一个通用的报表查看器
我从SP 5.0获得来自SP的DataSource;我在xml文件中有一个数据集。它包含存储过程的属性。
我的代码示例是
private void btnNewStaff_Click(object sender, EventArgs e)
{
SaleManager aManager = new SaleManager();
var reportForm = new CommonReportViewer();
reportForm.commonRptViewer.LocalReport.ReportPath = "RptTransactionDetails.rdlc";
var data = aManager.GetTransactionDetails(-9223372036854775808);
var reportDataSource = new ReportDataSource("TransactionDetails", data);
reportForm.ShowReport(new[] { reportDataSource });
}
其中-9223372036854775808是事务ID(稍后会动态),数据源中的TransactionDetails
是RDLC中数据集的名称。
从ShowReport开始,它将转到常见的报告表格,即
internal void ShowReport(IEnumerable<ReportDataSource> dataSources)
{
foreach (var dataSource in dataSources)
commonRptViewer.LocalReport.DataSources.Add(dataSource);
commonRptViewer.LocalReport.Refresh();
commonRptViewer.Refresh();
}
但是没有报告表格既不加载报告也无法找出问题所在。
答案 0 :(得分:0)
您的报告路径不是实际路径。 您应该将报告定义为嵌入资源,或者定义完整报告路径。
要使用嵌入式报告,请使用:
reportForm.commonRptViewer.LocalReport.ReportEmbeddedResource = "RptTransactionDetails.rdlc";
要使用报告路径,请计算路径(如下所示):
string appPath = Application.StartupPath;
reportForm.commonRptViewer.LocalReport.ReportPath = Path.Combine(appPath, Reports\RptTransactionDetails.rdlc");