2011-05-30 124 views
0


假设您有一个报告CustomerReport.rdlc,这是一个客户....
是否有可能在同一个reportviewer有多个客户的报告?
如果不是什么是另一种解决方案?RDLC报告如何创建多个?

+0

为什么“crystal-reports”标签? reportviewer和.rdlc不是Crystal,它们不可互操作? – 2011-05-30 17:33:18

+0

确定更改:) bb – GorillaApe 2011-05-30 19:44:03

回答

0

解决方案似乎是代码生成rdlc!

1

是的,可以为所有客户提供一份报告。基本上,您可以定义报告模板CustomerReport.rdlc以从某个数据集(存储过程或数据层中的某种方法)获取数据。

for ex。你的方法应该是这个样子:

public DataTable GetCustomerDetails(int customerID) 
{ 
    //call stored procedure 
} 

然后在页面上哪里是你的ReportViewer做这样的事:

DataTable data = GetCustomerDetails(1); 
this.ReportViewer1.ProcessingMode = Microsoft.Reporting.WebForms.ProcessingMode.Local; 
this.ReportViewer1.LocalReport.ReportPath = "CustomerReport.rdlc"; 
this.ReportViewer1.LocalReport.DataSources.Clear(); 
this.ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("[Datasource name defined in CustomerReport.rdlc]", data)); 
this.ReportViewer1.LocalReport.Refresh(); 
+0

谢谢你的回应...我不知道如何做到这一点..它确实从数据集中获取数据。刷新刷新将删除以前的报告..我想每个客户都有一个页面的报告以便能够打印所有的文件或导出所有文件。 – GorillaApe 2011-05-30 19:49:31

0

单ReportViewer控件会显示一个.rdlc文件,与任何一起包含在“父”.rdlc“一次”的子报表。如果您使用网络表单,最好不要尝试将第二个报表重新加载到报表查看器中。最好清空包含reportviewer的div并创建一个reportviewer控件的新实例,并将其插入容器(div/span/etc)。

之后,它只是确保你有客户指定的数据作为数据源。