【问题标题】:Reporting Services custom assembly: accessing report parametersReporting Services 自定义程序集:访问报告参数
【发布时间】:2014-01-28 23:32:26
【问题描述】:

我正在编写要在报告中引用的自定义程序集。我希望能够从该程序集中访问 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,但它似乎没有将参数作为属性。

所以问题是,我怎样才能做到这一点,我必须参考什么程序集?如果可能的话,我可以在不从 RDL 传递的情况下访问Report 对象吗,也就是说,我可以只注册我的类的一个实例,然后编写如下表达式:

=Utils.DoStuffWhileReferencingReportParameters(Fields!field.Value)

【问题讨论】:

    标签: reporting-services ssrs-2008


    【解决方案1】:

    在您的库中引用这两个 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)
    

    【讨论】:

    • 我不认为引用 ProcessingCore 是必要的,我发现引用对象模型并不能解决我遇到的确切问题,实际上我发现基本上不可能引用其中的参数dll 而不以某种方式从 RDL 传递它们 - 这就是我最终做的事情,我让构造函数接受了参数集合。无论如何,为了你的努力 - 我接受你的回答:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-04
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多