如何在RDL中使用自定义实用程序类?

时间:2011-03-12 20:39:55

标签: c# .net visual-studio-2008 rdl report-designer

如何在本地模式的Microsoft报告中使用自己的实用程序类(在应用程序代码中使用的实用程序类)?它甚至可能吗?

我已经阅读了一些规范,并且有一些元素表明它可以完成但是不清楚该怎么做。

即使我用名称空间前缀调用它,简单地调用代码也不起作用。

1 个答案:

答案 0 :(得分:3)

假设您使用实用程序方法将程序集完全限定为ReportUtils, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

它有两个类:

  • 使用公开方法的公共静态ReportUtils.Foo string GetValue()
  • 具有无参数构造函数和公共属性Bar的公共类Id

Visual Studio 2008

Report -> Report Properties -> References - 参考部分。

RDL xml

添加

<CodeModules>
    <CodeModule>ReportUtils, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</CodeModule>
</CodeModules>

Report元素下。

您还可以添加在加载报告时自动构建的类的实例

Visual Studio 2008

与之前相同的菜单 - 课程部分。

RDL xml

添加

<Classes>
    <Class>
        <ClassName>ReportUtils.Bar</ClassName>
        <InstanceName>barInstance</InstanceName>
    </Class>
</Classes>

Report元素下。

您可以使用以下静态实用程序方法:

<Value>=ReportUtils.Foo.GetValue()</Value>

您可以像这样使用您的类实例:

<Value>=Code.barInstance.Id</Value>

您必须将您的程序集添加为您正在使用的LocalReport实例的受信任程序:

localReport.AddTrustedCodeModuleInCurrentAppDomain("ReportUtils, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null");

您可能需要将ReportUtils程序集复制到 VS2008 \ Common7 \ IDE \ PrivateAssemblies 目录,以便可以在Visual Studio的报表设计器中设计报表而不会出错。

我最近使用过这个,所以这应该是实现目标的所有必要步骤。