实现 IRenderingExtension 接口

呈现扩展插件从与实际数据相结合的报表定义中获取结果,并将生成的数据呈现为可使用的格式。 组合数据和格式的转换是使用实现的公共语言运行时 (CLR) 类完成的 IRenderingExtension。 这会将对象模型转换为查看器、打印机或其他输出目标可消耗的输出格式。

IRenderingExtension 三种方法必须编码:

以下部分更详细地讨论了这些方法。

Render 方法

该方法 Render 包含表示以下对象的参数:

  • 要呈现的 报表 。 此对象包含报表的属性、数据和布局信息。 报表是报表对象模型树的根目录。

  • 包含字符串字典对象的 ServerParameters ,以及报表服务器的参数(如果有)。

  • 包含设备设置的 deviceInfo 参数。 有关详细信息,请参阅 将设备信息设置传递到呈现扩展插件

  • 包含字典NameValueCollection对象的 clientCapabilities 参数,该字典对象包含要呈现的客户端的相关信息。

  • 包含有关呈现结果信息的 RenderProperties

  • createAndRegisterStream 是一个委托函数,用于获取要呈现到的流。

deviceInfo 参数

deviceInfo 参数包含呈现参数,而不是报表参数。 这些呈现参数将传递给呈现扩展插件。 deviceInfo 值由报表服务器转换为NameValueCollection对象。 deviceInfo 参数中的项被视为不区分大小写的值。 如果呈现请求由于 URL 访问而产生,则表单 rc:key=value 中的 URL 参数将转换为 deviceInfo 字典对象中的键/值对。 浏览器检测代码还提供 clientCapabilities 字典中的以下项:EcmaScriptVersion、JavaScript、MajorVersion、MinorVersion、Win32、Type 和 AcceptLanguage。 忽略呈现扩展插件无法理解的 deviceInfo 参数中的任何名称/值对。 下面的代码示例演示检索图标的示例 GetRenderingResource 方法:

public void GetRenderingResource (CreateStream createStreamCallback, NameValueCollection deviceInfo)  
{  
    string[] iconTagValues = deviceInfo.GetValues("Icon");  
    if ((iconTagValues != null) && (iconTagValues.Length > 0) )  
    {  
        // Create a stream to output to.  
        Stream outputStream = createStreamCallback(m_iconResourceName, "gif", null, "image/gif", false);  
        // Get the GIF image for one of the buttons on the toolbar  
        Image requiredImage = (Image) m_resourcemanager.GetObject(m_iconResourceName  
        // Write the image to the output stream  
        requiredImage.Save(outputStream, requiredImage.RawFormat);  
    }  
    return;  
}  

RenderStream 方法

该方法 RenderStream 从报表呈现特定流。 所有流都是在初始 Render 调用期间创建的,但流最初不会返回到客户端。 此方法用于辅助流,例如 HTML 呈现中的图像,或多页呈现扩展插件的其他页面,如 Image/EMF。

GetRenderingResource 方法

该方法 GetRenderingResource 检索信息,而无需执行报表的整个呈现。 有时,报表需要不需要呈现报表本身的信息。 例如,如果需要与呈现扩展插件关联的图标,请使用包含单个标记<图标>deviceInfo 参数。 在这些情况下,可以使用该方法 GetRenderingResource

另请参阅

实现呈现扩展插件
呈现扩展插件概述