Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A extensão de renderização pega os resultados de uma definição de relatório que é combinada com os dados reais e gera os dados resultantes para um formato utilizável. A transformação dos dados combinados e da formatação é feita usando uma classe de runtime de linguagem comum (CLR) que implementa IRenderingExtension. Isso transforma o modelo de objeto em um formato de saída que pode ser consumido por um visualizador, impressora ou outro destino de saída.
O IRenderingExtension possui três métodos que devem ser codificados:
Render - Faz o relatório.
RenderStream - gera um fluxo específico do relatório.
GetRenderingResource - obtém informações adicionais exigidas para o relatório, como ícones.
As seções seguintes discutem esses métodos com mais detalhes.
Método de renderização
O Render método contém argumentos que representam os seguintes objetos:
O relatório que você quer renderizar. Este objeto contém propriedades, dados e informações de layout para o relatório. O relatório é a raiz da árvore do modelo de objetos do relatório.
Os ServerParameters que contêm o objeto do dicionário de strings, com os parâmetros para o servidor de relatórios, se houver.
O parâmetro deviceInfo que contém as configurações do dispositivo. Para mais informações, veja Passar configurações de informação de dispositivo para extensões de renderização.
O parâmetro clientCapabilities que contém um NameValueCollection objeto dicionário com informações sobre o cliente para o qual você está renderizando.
O parâmetro RenderProperties que contém informações sobre o resultado de renderização.
O createAndRegisterStream é uma função de delegado a ser chamada para obter um fluxo para renderizar.
parâmetro deviceInfo
O parâmetro deviceInfo contém parâmetros de renderização, não parâmetros de relatório. Esses parâmetros de renderização são passados para a extensão de renderização. Os valores deviceInfo são convertidos em um NameValueCollection objeto pelo servidor de relatórios. Itens no parâmetro deviceInfo são tratados como valores insensíveis a maiúsculas e minúsculas. Se a solicitação de renderização veio como resultado do acesso à URL, os parâmetros da URL no formulário rc:key=value são convertidos em pares chave/valor no objeto deviceInfo . O código de detecção do navegador também fornece os seguintes itens no dicionário de Capacidades do cliente : EcmaScriptVersion, JavaScript, MajorVersion, MinorVersion, Win32, Type e AcceptLanguage. A extensão de renderização ignora qualquer par nome/valor no parâmetro deviceInfo que ela não entende. O exemplo de código a seguir mostra um método de exemplo GetRenderingResource que recupera ícones:
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
O RenderStream método gera um fluxo específico a partir do relatório. Todos os fluxos são criados durante a chamada inicial Render , mas os fluxos não são devolvidos ao cliente inicialmente. Esse método é usado para fluxos secundários, como imagens em renderização HTML, ou outras páginas de uma extensão de renderização multi-página, como Image/EMF.
Método GetRenderingResource
O GetRenderingResource método recupera as informações sem executar uma renderização completa do relatório. Há momentos em que o relatório exige informações que não exigem que o próprio relatório seja apresentado. Por exemplo, se você precisar do ícone associado à extensão de renderização, use o parâmetro deviceInfo contendo a única tag <Icon>. Nesses casos, você pode usar o GetRenderingResource método.