Share via


Implementar la interfaz IRenderingExtension

La extensión de representación toma los resultados de una definición de informe que se combina con los datos reales y representa los datos resultantes en un formato que se puede usar. La transformación de los datos combinados y el formato se efectúan utilizando una clase de Common Language Runtime (CLR) que implementa IRenderingExtension. De esta forma se transforma el modelo de objetos en un formato de salida que puede usar un visor, impresora u otro destino de salida.

IRenderingExtension tiene tres métodos que deben estar codificados:

  • Render: representa el informe.

  • RenderStream: representa una secuencia concreta del informe.

  • GetRenderingResource: obtiene la información adicional, como iconos, necesaria para el informe.

En las siguientes secciones se describen los métodos con más detalle.

Método Render

El método Render contiene argumentos que representan los objetos siguientes:

  • El report que desea representar. Este objeto contiene propiedades, datos e información de presentación para el informe. El informe es la raíz del árbol del modelo de objetos de informe.

  • ServerParameters que contiene el objeto de diccionario de cadena, con los parámetros para el servidor de informes, si hay alguno.

  • El parámetro deviceInfo que contiene la configuración del dispositivo. Para obtener más información, vea Configuración de información de dispositivo de Reporting Services.

  • El parámetro clientCapabilities que contiene un objeto de diccionario NameValueCollection que tiene información acerca del cliente al que está representando.

  • RenderProperties que contiene información acerca del resultado de la representación.

  • createAndRegisterStream es una función de delegado que se va a llamar para obtener una secuencia en la que representar.

Parámetro de deviceInfo

El parámetro deviceInfo contiene los parámetros de representación, no los parámetros de informe. Estos parámetros de representación se pasan a la extensión de representación. El servidor de informes convierte los valores de deviceInfo en un objeto NameValueCollection. Los elementos del parámetro deviceInfo se tratan como valores que no distinguen mayúsculas y minúsculas. Si la solicitud de representación se produjo como resultado del acceso de dirección URL, los parámetros de dirección URL con el formato rc:key=value se convierten en pares de tecla y valor en el objeto de diccionario deviceInfo. El código de detección de explorador también proporciona los elementos siguientes en el diccionario clientCapabilities: EcmaScriptVersion, JavaScript, MajorVersion, MinorVersion, Win32, Type y AcceptLanguage. Se omite cualquier par de nombre y valor de deviceInfo que la extensión de representación no entienda. La muestra de código siguiente muestra un método GetRenderingResource de muestra que recupera los iconos.

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;
}

Método RenderStream

El método RenderStream representa una secuencia determinada del informe. Todas las secuencias se crean durante la llamada de Render inicial, pero las secuencias no se devuelven inicialmente al cliente. Este método se utiliza para secuencias secundarias (similares a las imágenes en la representación HTML) o páginas adicionales de una extensión de representación de varias páginas (similar a Image/EMF).

Método GetRenderingResource

El método GetRenderingResource recupera la información sin ejecutar una representación completa del informe. Hay ocasiones en que el informe requiere información que no requiere representar el propio informe. Por ejemplo, si necesita el icono asociado a la extensión de representación, utilice el parámetro deviceInfo que contiene la etiqueta <Icon>. En estos casos, puede usar el método GetRenderingResource.