2010-10-26 59 views
4

我目前正試圖動態發送一個rdl報告給我的ReportViewer .net對象。數據源實例尚未提供給數據源

我不斷收到錯誤,當我做到這一點:一個數據源實例尚未爲數據源「嗒嗒」

我想在我的代碼在運行時來定義落後的「嗒嗒」提供。

ReportViewer1.ProcessingMode = Microsoft.Reporting.WebForms.ProcessingMode.Local; 
    ReportViewer1.LocalReport.ReportPath = ReportFile; 
    ReportViewer1.LocalReport.DataSources.Clear(); 
    Microsoft.Reporting.WebForms.ReportDataSource rds = new Microsoft.Reporting.WebForms.ReportDataSource(); 
    rds.Name = "blah"; 
    ReportViewer1.LocalReport.DataSources.Add(rds); 
    ReportViewer1.DocumentMapCollapsed = true; 
    ReportViewer1.LocalReport.Refresh(); 

這不是由一個長鏡頭工作。我不確定我應該做什麼。這裏是我的RDL文件的頂部的摘錄:

<DataSource Name="blah"> 
     <rd:DataSourceID>c6a8409e-71a4-4e96-86ad-b300a5b942c3</rd:DataSourceID> 
     <ConnectionProperties> 
     <DataProvider>SQL</DataProvider> 
     <ConnectString>Data Source=10.555.121.121;Initial Catalog=blah</ConnectString> 
     <IntegratedSecurity>true</IntegratedSecurity> 
     </ConnectionProperties> 
    </DataSource> 
    </DataSources> 

所有我在我的報告試圖做的是簡單地選擇*從表中的「嗒嗒」。我需要這個工作,因爲我有很多其他報告實例需要在ReportViewer中顯示。爲什麼微軟不這麼做呢?

在此先感謝誰?

+0

不要你需要ReportViewer1.DataBind();? – Raymund 2010-10-26 23:05:34

+1

感謝您的建議,解決方案並不那麼容易,我不得不解析rdl的XML並檢索sql並從中構建數據源,然後將數據源命名爲與rdl相同的名稱,然後開始工作。 – Lyle 2010-10-28 15:51:02

+2

你在做什麼似乎很有趣。也許你應該詳細說明你作爲答案做了什麼,然後接受它? – Mzn 2014-08-26 07:36:09

回答

0

ReportViewer控件設計在本地模式與RDLC報告文件,而不是RDL報告文件的工作。 ReportViewer控件僅用於呈現報表,因此會忽略可能存在的任何數據集和連接信息(即,如果您使用RDL文件而不是RDLC文件)。其目的是創建任何連接,查詢數據源,將結果放入DataTable中並添加這些連接以在調用應用程序中爲reportViewer控件創建reportDataSource。

從MSDN:

在本地處理模式下,控制打開報告定義, 處理它,然後呈現在觀看區域的報告。在本地 處理模式下,您可以從文件系統上的.rdlc文件 獲取報告定義,或者從應用程序的嵌入式資源中獲取報告定義。

的更多信息:Adding and Configuring the ReportViewer Controls

參見:When to use RDLC over RDL reports?