Condividi tramite


Implementazione dell'interfaccia IRenderingExtension

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. La trasformazione dei dati combinati e della formattazione viene eseguita tramite una classe CLR (Common Language Runtime) che implementa 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.

IRenderingExtension dispone di tre metodi che devono essere codificati:

  • Render: consente di eseguire il rendering del report.

  • RenderStream: consente di eseguire il rendering di un flusso specifico dal report.

  • GetRenderingResource: consente di ottenere informazioni aggiuntive, come icone, necessarie per il report.

Nelle sezioni seguenti questi metodi vengono descritti in modo più dettagliato.

Metodo Render

Il metodo Render contiene argomenti che rappresentano gli oggetti seguenti:

  • Il report di cui si desidera eseguire il rendering. Questo oggetto contiene proprietà, dati e informazioni sul layout per il report. Il report costituisce la radice dell'albero del modello a oggetti del report.

  • L'oggetto ServerParameters contenente l'oggetto dizionario di stringhe con i parametri per il server di report, se disponibili.

  • I parametri deviceInfo contenenti le impostazioni dei dispositivi. Per ulteriori informazioni, vedere Impostazioni relative alle informazioni sul dispositivo di Reporting Services.

  • Il parametro clientCapabilities contenente un oggetto dizionario NameValueCollection +con informazioni sul client in cui si esegue il rendering.

  • L'oggetto RenderProperties contenente le informazioni sul risultato di rendering.

  • createAndRegisterStream è una funzione di delegato che deve essere chiamata per ottenere un flusso in cui eseguire il rendering.

Parametro deviceInfo

Il parametro deviceInfo contiene parametri di rendering e non parametri del report. Questi parametri vengono passati all'estensione per il rendering. I valori di deviceInfo vengono convertiti in un oggetto NameValueCollection dal server di report. Gli elementi inclusi nel parametro deviceInfo vengono trattati come valori senza distinzione tra maiuscole e minuscole. 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. Il codice di rilevamento del browser fornisce inoltre gli elementi seguenti nel dizionario clientCapabilities: EcmaScriptVersion, JavaScript, MajorVersion, MinorVersion, Win32, Type e AcceptLanguage. Qualsiasi coppia nome/valore presente nel parametro deviceInfo non compresa dall'estensione per il rendering viene ignorata. Nell'esempio di codice seguente viene illustrato un metodo GetRenderingResource di esempio per il recupero delle icone:

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 RenderStream

Il metodo RenderStream consente di eseguire il rendering di un flusso specifico dal report. Tutti i flussi vengono creati durante la chiamata a Render iniziale, ma i flussi non vengono inizialmente restituiti al client. 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.

Metodo GetRenderingResource

Il metodo GetRenderingResource consente di recuperare le informazioni senza eseguire l'intero rendering del report. In alcuni casi, il report necessita di informazioni che non richiedono il rendering del report stesso. Se, ad esempio, è necessaria l'icona associata all'estensione per il rendering, utilizzare il parametro deviceInfo contenente il tag singolo <Icon>. In questi casi, è possibile utilizzare il metodo GetRenderingResource.