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 di cui 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.

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

  • Il parametro deviceInfo contenente le impostazioni dei dispositivi.The deviceInfo parameter that contain the device settings. Per altre informazioni, vedere Passaggio delle impostazioni relative alle informazioni sul dispositivo alle estensioni per il rendering.For more information, see Passing Device Information Settings to Rendering Extensions.

  • Il parametro clientCapabilities contenente un oggetto dizionario NameValueCollection con informazioni sul client in cui viene eseguito il rendering.The clientCapabilities parameter that contains a NameValueCollection dictionary object that has information about the client to which you are rendering.

  • L'oggetto RenderProperties contenente le informazioni sul risultato del rendering.The RenderProperties that contains information about the rendering result.

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

Parametro deviceInfodeviceInfo Parameter

Il parametro deviceInfo contiene i parametri di rendering, non i parametri del 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. I valori di deviceInfo vengono convertiti in un oggetto NameValueCollection dal server di report.The deviceInfo values are converted into a NameValueCollection object by the report server. Gli elementi inclusi nel parametro deviceInfo vengono trattati come valori senza distinzione tra maiuscole e minuscole.Items in the deviceInfo parameter are treated as case-insensitive values. Se la richiesta di rendering deriva da un accesso con URL, i parametri URL nel formato rc:key=value vengono convertiti in coppie chiave/valore nell'oggetto dizionario deviceInfo.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 include anche gli elementi seguenti nel dizionario clientCapabilities: EcmaScriptVersion, JavaScript, MajorVersion, MinorVersion, Win32, Type e AcceptLanguage.The browser detection code also provides the following items in the clientCapabilities dictionary: EcmaScriptVersion, JavaScript, MajorVersion, MinorVersion, Win32, Type, and AcceptLanguage. Le coppie nome/valore incluse nel parametro deviceInfo che non vengono comprese dall'estensione per il rendering verranno ignorate.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. Se, ad esempio, è necessaria l'icona associata all'estensione per il rendering, usare il parametro deviceInfo contenente il tag singolo <Icon>.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