2009-11-17 166 views
2

我正在寫一個自定義程序集以在報告中引用。我希望能夠訪問該組件中的Report對象,以便我可以通過使用Report.stuff訪問報表參數和其他可以在自定義RDL代碼中訪問的內容。報告服務自定義程序集:訪問報告參數

我顯然需要引用一些報告服務程序集來做到這一點,但我無法弄清楚哪一個。我試過Microsoft.ReportingServices.ProcessingCore,因爲它有一個類Report各種屬性,如Parameters等等,但是當我試圖從RDL自定義代碼段上我的課通過Report對象,我得到這個錯誤:

Unable to cast object of type 'ReportExprHostImpl' to type 'Microsoft.ReportingServices.ReportRendering.Report'.

有也是一個暴露各種接口和抽象類Report的程序集,但它似乎沒有作爲屬性的參數。

所以問題是,我怎麼能做到這一點,我必須參考什麼樣的組件?如果可能的話,我可以訪問Report對象而不RDL傳遞,即,使得我可以只登記自己的類的實例,後來寫這樣的表達式:

=Utils.DoStuffWhileReferencingReportParameters(Fields!field.Value)

回答

0

參考這兩個庫中的dll文件: Microsoft.ReportingServices.ProcessingCore Microsoft.ReportingServices.ProcessingObjectModel

將下面的代碼庫中的(作爲一個例子)

using Microsoft.ReportingServices.ReportProcessing.ReportObjectModel; 

public static string Test(Parameters item) 
{ 

    return item ["my_parameter_name"].Value.ToString(); 
} 

這裏有一個例子來表達您的RDL文件中使用:

=MyNameSpace.MyStaticClass.Test(Parameters) 
+0

我不認爲引用ProcessingCore是必要的,我已經發現,引用對象模型不解決確切的問題我有,其實我發現那麼基本上不可能在dll中引用參數而不以某種方式從RDL傳遞它們 - 這就是我最終做的事情,我讓構造函數接受了Parameters集合。無論如何,爲你的努力 - 我接受你的回答:) – 2009-12-19 11:41:42