Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
A extensão de renderização retira os resultados de uma definição de relatório que é combinada com os dados reais e transforma os dados resultantes num 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. Isto transforma o modelo de objeto num formato de saída que pode ser consumido por um visualizador, impressora ou outro destino de saída.
Tem IRenderingExtension três métodos que devem ser codificados:
Render - Apresenta o relatório.
RenderStream - renderiza um fluxo específico do relatório.
GetRenderingResource - obtém informações adicionais necessárias para o relatório, como ícones.
As secções seguintes discutem estes métodos com mais detalhe.
Método de renderização
O Render método contém argumentos que representam os seguintes objetos:
O relatório que queres 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 existirem.
O parâmetro deviceInfo que contém as definições do dispositivo. Para mais informações, consulte Passar as definições de informação do dispositivo para extensões de renderização.
O parâmetro clientCapabilities que contém um NameValueCollection objeto de dicionário com informação sobre o cliente para o qual estás a renderizar.
O parâmetro RenderProperties que contém informação sobre o resultado da 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. Estes parâmetros de renderização são passados para a extensão de renderização. Os valores deviceInfo são convertidos num NameValueCollection objeto pelo servidor de relatórios. Os itens no parâmetro deviceInfo são tratados como valores insensíveis a maiúsculas minúsculas. Se o pedido de renderização surgiu como resultado do acesso a URL, os parâmetros URL no formulário rc:key=value são convertidos em pares chave/valor no objeto do dicionário deviceInfo . O código de deteção do navegador também fornece os seguintes itens no dicionário clienteCapabilities : EcmaScriptVersion, JavaScript, MajorVersion, MinorVersion, Win32, Type e AcceptLanguage. A extensão de renderização ignora qualquer par nome/valor no parâmetro deviceInfo que não compreenda. O exemplo de código seguinte 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. Este 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 a informação sem executar uma renderização completa do relatório. Há momentos em que o relatório exige informação que não exige que o próprio relatório seja apresentado. Por exemplo, se precisares do ícone associado à extensão de renderização, usa o parâmetro deviceInfo que contém a única etiqueta <Icon>. Nestes casos, pode usar o GetRenderingResource método.