我正在编写要在报告中引用的自定义程序集。我希望能够从该程序集中访问Report
对象,以便我可以使用Report.stuff
访问报表参数以及我可以在自定义RDL代码中访问的其他内容。
我显然需要引用一些报告服务程序集来执行此操作,但我无法弄清楚哪些。我尝试了Microsoft.ReportingServices.ProcessingCore
,因为它有一个类Report
,其中包含Parameters
等各种属性,但当我尝试将Report
对象从RDL自定义代码段传递给我的班级,我收到了这个错误:
Unable to cast object of type 'ReportExprHostImpl' to type 'Microsoft.ReportingServices.ReportRendering.Report'.
还有一个暴露各种接口和抽象类Report
的程序集,但它似乎没有将参数作为属性。
所以问题是,我怎么能实现这一点,我必须参考哪个组件?如果可能的话,我可以访问Report
对象而不将其从RDL传递,即我可以只注册我的类的实例,然后编写如下表达式:
=Utils.DoStuffWhileReferencingReportParameters(Fields!field.Value)
答案 0 :(得分: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)