2011-05-30 181 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)。

之後,它只是確保你有客戶指定的數據作爲數據源。