Поделиться через


Класс Microsoft.Reporting.WebFormsClient.ReportViewer

Содержит свойства и методы для программирования клиентской части серверного веб-элемента управления ReportViewer.

Серверный веб-элемент управления ReportViewer создает экземпляр этого класса в клиентском обозревателе как дескриптор для программного взаимодействия с клиентским элементом управления. Этот экземпляр позволяет настроить поведение клиентского элемента управления с минимальным количеством операций обратной передачи на сервер.

Пространство имен:Microsoft.Reporting.WebFormsClient

Наследует:Sys.Component

Синтаксис

                var v = $find(viewerId);

Члены

Имя

Описание

Метод Microsoft.Reporting.WebFormsClient.ReportViewer.exportReport

Экспортирует отчет в указанном формате.

Метод Microsoft.Reporting.WebFormsClient.ReportViewer.find

Ищет строку в текущем отчете в области отчета.

Метод Microsoft.Reporting.WebFormsClient.ReportViewer.findNext

Находит в отчете следующее совпадение с условиями поиска.

Метод Microsoft.Reporting.WebFormsClient.ReportViewer.invokePrintDialog

Открывает диалоговое окно Печать.

Метод Microsoft.Reporting.WebFormsClient.ReportViewer.recalculateLayout

Повторно вычисляет макет элемента управления ReportViewer.

Метод Microsoft.Reporting.WebFormsClient.ReportViewer.refreshReport

Обновляет отчет.

Свойство Microsoft.Reporting.WebFormsClient.ReportViewer.documentMapCollapsed

Возвращает или задает значение типа Boolean, которое определяет, свернута ли схема документа.

Свойство Microsoft.Reporting.WebFormsClient.ReportViewer.isLoading

Возвращает значение типа Boolean, которое показывает, что веб-страница выполняет обратную передачу или клиентский элемент управления выполняет загрузку содержимого.

Свойство Microsoft.Reporting.WebFormsClient.ReportViewer.promptAreaCollapsed

Возвращает или задает значение типа Boolean, которое определяет, свернута ли область подсказки параметров.

Свойство Microsoft.Reporting.WebFormsClient.ReportViewer.reportAreaContentType

Возвращает значение перечисления Microsoft.Reporting.WebFormsClient.ReportAreaContent, которое указывает текущий тип содержимого области отчета.

Свойство Microsoft.Reporting.WebFormsClient.ReportViewer.reportAreaScrollPosition

Возвращает или задает объект Sys.UI.Point, представляющий позицию прокрутки области отчета.

Свойство Microsoft.Reporting.WebFormsClient.ReportViewer.zoomLevel

Возвращает или задает значение типа string, которое представляет текущий масштаб.

Замечания

Экземпляр класса ReportViewer не создается непосредственно. Вместо этого выполняется обращение к экземпляру ReportViewer. Экземпляр ReportViewer создается каждый раз, когда серверный веб-элемент управления готовится к просмотру в клиентском обозревателе, и сохраняется, пока веб-страница остается открытой в обозревателе и не выполняется повторная подготовка к просмотру серверного веб-элемента управления. Если серверный веб-элемент управления ReportViewer размещается в элементе управления UpdatePanel, то экземпляр ReportViewer удаляется и создается заново каждый раз, когда в клиентском обозревателе путем частичного обновления страницы обновляется панель обновления.

Для доступа к экземпляру ReportViewer используется метод Sys.Application.findComponent или ярлык $find с идентификатором экземпляра ReportViewer. Например, следующий фрагмент кода страницы ASP.NET регистрирует файл JavaScript ClientCode.js в элементе управления ScriptManager. Затем файл ClientCode.js определяет метод rezoom, который использует метод $find для доступа к экземпляру ReportViewer с помощью клиентского идентификатора серверного веб-элемента управления ReportViewer. Добавление ссылок на скрипты в элемент управления ScriptManager гарантирует, что зарегистрированные скрипты будут выполняться после загрузки библиотеки Microsoft AJAX.

<asp:ScriptManager ID="ScriptManager1" runat="server">
    <Scripts>
        <asp:ScriptReference Path="ClientCode.js" />
    </Scripts>
</asp:ScriptManager>
<rsweb:ReportViewer ID="ReportViewer1" runat="server" ProcessingMode="Remote">
    <ServerReport ReportPath="/AdventureWorks 2008 Sample Reports/Company Sales 2008" 
        ReportServerUrl="http://<servername>/reportserver" />
</rsweb:ReportViewer>
<asp:TextBox ID="TextBox1" runat="server" onchange="rezoom(value)"></asp:TextBox>

Далее приводится код для файла ClientCode.js. В большинстве случаев значением переменной viewerID является идентификатор серверного веб-элемента управления на странице ASP.NET. Во фрагменте ASP.NET это значение ReportViewer1. Чтобы гарантированно получить клиентский идентификатор, следует использовать свойство ClientID серверного веб-элемента управления.

function rezoom(level) {
    var viewer = $find("ReportViewer1");
    if (!viewer.get_isLoading() && viewer.get_zoomLevel() != level)
        viewer.set_zoomLevel(level);
}

Исключения, вызываемые экземпляром ReportViewer

Когда веб-страница выполняет обратную передачу или клиентский элемент управления загружает содержимое, обращение к любому методу или свойству экземпляра ReportViewer вызывает исключение со следующим сообщением: «Выполняется обновление отчета или страницы. Дождитесь завершения текущего действия». Свойство isLoading позволяет проверить, выполняется ли обновление отчета или страницы и можно ли обращаться к методам и свойствам. Это свойство не вызывает исключение.

Если веб-страница или клиентский элемент управления не выполняют обратную передачу, некоторому набору методов необходим загруженный отчет. Если отчет не загружен, то вызов этих методов приводит к исключению с сообщением «Не удается выполнить операцию, поскольку не загружен отчет». Такие методы перечислены далее. Перед использованием этих методов проверьте, содержит ли область отчета страницу отчета, с помощью свойства reportAreaContentType.

Обработка событий изменения свойств

Чтобы получать уведомления об изменении свойства, зарегистрируйте обработчик события с событием Sys.Component.propertyChanged. Это событие входит в базовый класс экземпляра ReportViewer. Например, следующий код регистрирует событие для соблюдения ограничения, наложенного на значение свойства zoomLevel. Можно добавить ссылку на скрипт в следующий код JavaScript в элементе управления ScriptManager.

Sys.Application.add_load(function () {
    $find(viewerID).add_propertyChanged(viewerPropertyChanged);
});

function viewerPropertyChanged(sender, e) {
    if (e.get_propertyName() == "zoomLevel") {
        var viewer = $find(viewerID);
        if (!viewer.get_isLoading() && viewer.get_zoomLevel() < 20) {
            viewer.set_zoomLevel(20);
            alert("Reset zoomLevel to 20.");
        }
    }
}

Изменения свойств, выполняемые до метода add_propertyChanged, не приводят к вызову обработчика события. Убедитесь, что метод add_propertyChanged расположен так, чтобы событие обрабатывалось ожидаемым образом. В большинстве случаев можно регистрировать событие propertyChanged в пределах обработчика события Sys.Application.load, как в приведенном выше примере кода. Однако, поскольку клиентский элемент управления также выполняет код в событии load, его обработчик add_load может изменить нужное свойство перед выполнением обработчика add_load в зависимости от порядка, в котором клиентская платформа AJAX выполняет обработчики add_load. Чтобы обеспечить обработку всех изменений свойств, можно зарегистрировать событие propertyChanged в обработчике события Sys.Application.init.

См. также

Основные понятия

Пространство имен Microsoft.Reporting.WebFormsClient

Другие ресурсы

AJAX Client Life-Cycle Events

Sys.Application.load Event