2009-12-31 92 views
0

我有一個下拉列表包含報告的名稱和每個報告有一個值(1,2,3 ...),我有一個彈出窗口,當用戶點擊視圖時出現報告按鈕 這個彈出窗口是一個包含報告查看器的網頁,在這個彈出頁面的cs中,我有一個swtich,它接受的是報告的值int如果我想顯示第一個報告,所以我選擇了第一個在下拉列表中,選定的值是1,它被傳遞到包含會話變量中的報告查看器的頁面,並將其傳遞給切換case 1; ........ break so i想知道如何創建一個報告類型的對象,並將其綁定到報告查看器在每種情況下,我做了這樣的事情,但我用水晶報告和水晶報告查看器有一個在報告服務報告上設置數據源

CrystalReportViewer1.ReportSource = rpt; 
CrystalReportViewer1.DataBind(); 

和我有一個報表對象

rpt.SetDataSource(dt);   
ReportDocument rpt; 

但是當我用報告服務

我不能做這樣的事情

,請幫助

感謝

+0

請重命名您的問題,以包括有關您的問題的明確信息,否則您將得到其他人的反對票。 – sorin 2009-12-31 16:01:09

回答

0

你是說關於Microsoft SQL Server Reporting Services(SSRS),對嗎?

該方法與使用Crystal有點不同 - 基本上,SSRS默認爲基於服務器的報告引擎,例如,你的應用程序(WinForms或ASP.NET或其它)並不實際在本地呈現報表,也不會在本地提供數據。

在SSRS中,這通常由報告本身和服務器處理。您通常只顯示報告(可能配置了一些報告參數),但總而言之,報告服務器將獲取數據,格式化,生成報告,並且應用程序實際上只顯示最終的輸出。

如果你想在本地渲染SSRS報告,你需要有一個* .rdlc文件 - 你有這個,你是否熟悉這個選項?

如果你這樣做 - 一旦你進入本地渲染報告,當然,你也必須在本地提供數據。如果您使用ASP.NET或的WinForms ReportViewer控制,你可以做到這一點是這樣的:

ReportViewer reportViewer = new ReportViewer(); 

reportViewer.ProcessingMode = ProcessingMode.Local; 
reportViewer.LocalReport.ReportPath = "Report1.rdlc"; // supply path to the RDLC file 
reportViewer.LocalReport.DataSources.Add(.........) 

reportViewer.RefreshReport(); 

基本上,你需要告訴你處理本地渲染ReportViewer控制,然後你需要爲其指定RDLC文件的路徑,並且您可以將任意數量的數據源添加到ReportViewer.LocalReport集合中,因爲您需要爲報告提供該集合。

這有幫助嗎?否則,請再澄清一下你的問題。

查看從Web服務檢索本地報告數據的VB.NET示例here

0

前段時間我試過這樣做。我放棄了,因爲它不是那麼重要,但我的想法是這樣的:

  1. 使用Web服務來創建一個新的數據源
  2. 使用Web服務來更改報表上的數據源
  3. 渲染ReportViewer中的報告
  4. 使用Web服務將DataSource切換回原始狀態。

我對ssrs的瞭解有限,但可能值得一試。