Implementare l'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 : ottiene informazioni aggiuntive necessarie per il report, ad esempio icone.

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.

  • Parametro deviceInfo che contiene le impostazioni del dispositivo. Per altre informazioni, vedere Passare le impostazioni delle informazioni sul dispositivo alle estensioni per il rendering.

  • Parametro clientCapabilities che contiene un NameValueCollection oggetto dizionario che contiene informazioni sul client in cui viene eseguito il rendering.

  • Parametro RenderProperties che contiene informazioni sul risultato del 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 i parametri di rendering, non i 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 include anche gli elementi seguenti nel dizionario clientCapabilities: EcmaScriptVersion, JavaScript, MajorVersion, MinorVersion, Win32, Type e AcceptLanguage. L'estensione per il rendering ignora qualsiasi coppia nome/valore nel parametro deviceInfo che non riconosce. 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;  
}  

RenderStream, metodo

Il metodo RenderStream consente di eseguire il rendering di un flusso specifico dal report. Tutti i flussi vengono creati durante la chiamata iniziale Render , ma inizialmente i flussi non vengono restituiti al client. Questo metodo viene usato per flussi secondari, ad esempio immagini nel rendering HTML o altre pagine di un'estensione per il rendering a più pagine, ad esempio Image/EMF.

Metodo GetRenderingResource

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