Реализация интерфейса IRenderingExtension
Модуль подготовки отчетов извлекает результаты из определения отчета, объединенного с реальными данными, и преобразует результирующие данные в формат, готовый к применению. Преобразование объединенных данных и форматирование осуществляется при помощи класса среды CLR, который реализует интерфейс IRenderingExtension. Модель объекта преобразуется в формат вывода, который предназначен для средства просмотра, принтера или другого приложения вывода.
Интерфейс IRenderingExtension имеет три метода, которые должны быть реализованы.
Render подготавливает отчет к просмотру.
RenderStream подготавливает к просмотру определенный поток из отчета.
GetRenderingResource возвращает дополнительные сведения, такие как значки, которые требуются отчету.
В следующих разделах данные методы обсуждаются более подробно.
Метод Render
Метод Render содержит аргументы, представляющие следующие объекты.
report — отчет, который необходимо подготовить. Данный объект содержит свойства, данные и сведения о макете отчета. Report — это корневой узел дерева модели объектов отчета.
Параметр ServerParameters одержит объект словаря строк с параметрами сервера отчетов (если такие существуют).
Параметр deviceInfo содержит параметры устройства. Дополнительные сведения см. разделе Передача параметров сведений об устройстве модулям подготовки отчетов.
Параметр clientCapabilities содержит объект словаря NameValueCollection со сведениями о клиенте, для которого выполняется отрисовка.
Параметр RenderProperties содержит сведения о результате отрисовки.
Параметр createAndRegisterStream — это функция-делегат, которую можно вызвать для получения потока, в который будет осуществляться отрисовка.
Параметр deviceInfo
Параметр deviceInfo содержит параметры отрисовки, а не параметры отчета. Данные параметры передаются модулю подготовки отчетов. Значения deviceInfo преобразуются сервером отчетов в объект NameValueCollection. Элементы в параметре deviceInfo рассматриваются как значения без учета регистра. Если запрос на отрисовку поступил в результате доступа по URL-адресу, то параметры URL-адреса в формате rc:key=value
преобразовываются в пары "ключ-значение" в объекте словаря deviceInfo. Код обнаружения браузера также предоставляет следующие элементы в словарь clientCapabilities: EcmaScriptVersion, JavaScript, MajorVersion, MinorVersion, Win32, Type и AcceptLanguage. Любая пара "имя-значение" в параметре deviceInfo, которую не удается распознать модулю подготовки отчетов, не учитывается. В следующем образце кода показывается образец метода GetRenderingResource, возвращающего значки:
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
Метод RenderStream подготавливает к просмотру определенный поток из отчета. Все потоки создаются при начальном вызове метода Render, однако изначально потоки не возвращаются клиенту. Данный метод используется для вторичных потоков (например, при подготовке отчетов в формате HTML) или дополнительных страниц многостраничного модуля подготовки отчетов (например, модуль подготовки изображений или модуль подготовки EMF).
Метод GetRenderingResource
Метод GetRenderingResource получает данные, не выполняя полную подготовку отчета. В некоторых случаях отчету необходимы данные, которые не требуют подготовки отчета. Например, если нужно получить значок, связанный с модулем подготовки отчетов, следует использовать параметр deviceInfo, содержащий единственный тег <Icon>. В подобных случаях можно использовать метод GetRenderingResource.
См. также:
Реализация модуля подготовки отчетов
Общие сведения о модулях подготовки отчетов