Implementazione dell'interfaccia IRenderingExtensionImplementing the IRenderingExtension Interface

L'estensione per il rendering prende i risultati da una definizione del report combinata con i dati effettivi ed eseguire il rendering dei dati risultanti in un formato che sia possibile utilizzare.The rendering extension takes the results from a report definition that is combined with the actual data and renders the resulting data to a format that is useable. La trasformazione dei dati combinati e della formattazione viene eseguita tramite una classe CLR (Common Language Runtime) che implementa IRenderingExtension.The transformation of the combined data and formatting is done by using a common language runtime (CLR) class that implements IRenderingExtension. Ciò consente di trasformare il modello a oggetti in un formato di output che può essere utilizzato da un visualizzatore, una stampante o un'altra destinazione di output.This transforms the object model into an output format that is consumable by a viewer, printer, or other output target.

IRenderingExtension dispone di tre metodi che devono essere codificati:The IRenderingExtension has three methods that must be coded:

  • Render: consente di eseguire il rendering del report.Render - renders the report.

  • RenderStream: consente di eseguire il rendering di un flusso specifico dal report.RenderStream - renders a specific stream from the report.

  • GetRenderingResource: consente di ottenere informazioni aggiuntive, come icone, necessarie per il report.GetRenderingResource - gets additional information, such as icons, that are required for the report.

    Nelle sezioni seguenti questi metodi vengono descritti in modo più dettagliato.The following sections discuss these methods in more detail.

Metodo RenderRender Method

Il metodo Render contiene argomenti che rappresentano gli oggetti seguenti:The Render method contains arguments that represent the following objects:

  • Il report che si desidera eseguire il rendering.The report that you want to render. Questo oggetto contiene proprietà, dati e informazioni sul layout per il report.This object contains properties, data, and layout information for the report. Il report costituisce la radice dell'albero del modello a oggetti del report.The report is the root of the report object model tree.

  • Il ServerParameters che contengono l'oggetto dizionario di stringhe con i parametri per il server di report, se presente.The ServerParameters that contain the string dictionary object, with the parameters for the report server, if any.

  • Il deviceInfo parametro contenenti le impostazioni del dispositivo.The deviceInfo parameter that contain the device settings. Per ulteriori informazioni, vedere passando Device Information Settings per estensioni per il Rendering.For more information, see Passing Device Information Settings to Rendering Extensions.

  • Il clientCapabilities parametro che contiene un NameValueCollection oggetto dizionario che contiene informazioni sul client a cui si esegue il rendering.The clientCapabilities parameter that contains a NameValueCollection dictionary object that has information about the client to which you are rendering.

  • Il RenderProperties che contiene informazioni sul risultato del rendering.The RenderProperties that contains information about the rendering result.

  • Il createAndRegisterStream è una funzione di delegato deve essere chiamato per ottenere un flusso per il rendering in.The createAndRegisterStream is a delegate function to be called to get a stream to render into.

Parametro deviceInfodeviceInfo Parameter

Il deviceInfo parametro contiene i parametri di rendering, non i parametri di report.The deviceInfo parameter contains rendering parameters, not report parameters. Questi parametri vengono passati all'estensione per il rendering.These rendering parameters are passed to the rendering extension. Il deviceInfo valori vengono convertiti in un NameValueCollection oggetto dal server di report.The deviceInfo values are converted into a NameValueCollection object by the report server. Gli elementi nel deviceInfo parametro vengono trattati come valori tra maiuscole e minuscole.Items in the deviceInfo parameter are treated as case-insensitive values. Se la richiesta di rendering deriva da URL di accesso, i parametri URL nel formato rc:key=value vengono convertiti in coppie chiave/valore di deviceInfo oggetto dizionario.If the render request came as a result of URL access, the URL parameters in the form rc:key=value are converted to key/value pairs in the deviceInfo dictionary object. Il codice di rilevamento del browser fornisce inoltre gli elementi seguenti nel clientCapabilities dizionario: EcmaScriptVersion, JavaScript, MajorVersion, MinorVersion, Win32, tipo e AcceptLanguage.The browser detection code also provides the following items in the clientCapabilities dictionary: EcmaScriptVersion, JavaScript, MajorVersion, MinorVersion, Win32, Type, and AcceptLanguage. Qualsiasi coppia di nome/valore di deviceInfo parametro che non compresa dall'estensione per il rendering viene ignorato.Any name/value pair in the deviceInfo parameter that is not understood by the rendering extension is ignored. Nell'esempio di codice seguente viene illustrato un metodo GetRenderingResource di esempio per il recupero delle icone:The following code sample shows a sample GetRenderingResource method that retrieves icons:

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

Metodo RenderStreamRenderStream Method

Il metodo RenderStream consente di eseguire il rendering di un flusso specifico dal report.The RenderStream method renders a particular stream from the report. Tutti i flussi vengono creati durante la chiamata a Render iniziale, ma i flussi non vengono inizialmente restituiti al client.All streams are created during the initial Render call, but the streams are not returned to the client initially. Questo metodo viene utilizzato per flussi secondari, ad esempio immagini nel rendering HTML o pagine aggiuntive di un'estensione per il rendering di più pagine, come Image/EMF.This method is used for secondary streams, such as images in HTML rendering, or additional pages of a multi-page rendering extension, such as Image/EMF.

Metodo GetRenderingResourceGetRenderingResource Method

Il metodo GetRenderingResource consente di recuperare le informazioni senza eseguire l'intero rendering del report.The GetRenderingResource method retrieves the information without executing an entire rendering of the report. In alcuni casi, il report necessita di informazioni che non richiedono il rendering del report stesso.There are times when the report requires information that does not require the report itself to be rendered. Ad esempio, se è necessaria l'icona associata all'estensione per il rendering, utilizzare il deviceInfo parametro contenente il tag singolo <icona >.For example, if you need the icon associated with the rendering extension, use the deviceInfo parameter containing the single tag <Icon>. In questi casi, è possibile utilizzare il metodo GetRenderingResource.In these cases, you can use the GetRenderingResource method.

Vedere ancheSee Also

Implementazione di un'estensione per il Rendering Implementing a Rendering Extension
Panoramica delle estensioni per il renderingRendering Extensions Overview