Класс Microsoft.Reporting.WebFormsClient.ReportViewer
Содержит свойства и методы для программирования клиентской части серверного веб-элемента управления ReportViewer.
Серверный веб-элемент управления ReportViewer создает экземпляр этого класса в клиентском обозревателе как дескриптор для программного взаимодействия с клиентским элементом управления. Этот экземпляр позволяет настроить поведение клиентского элемента управления с минимальным количеством операций обратной передачи на сервер.
Пространство имен:Microsoft.Reporting.WebFormsClient
Наследует:Sys.Component
Синтаксис
var v = $find(viewerId);
Члены
Имя |
Описание |
---|---|
Метод Microsoft.Reporting.WebFormsClient.ReportViewer.exportReport |
Экспортирует отчет в указанном формате. |
Ищет строку в текущем отчете в области отчета. |
|
Метод 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.
Метод Microsoft.Reporting.WebFormsClient.ReportViewer.invokePrintDialog
Метод Microsoft.Reporting.WebFormsClient.ReportViewer.exportReport
Метод Microsoft.Reporting.WebFormsClient.ReportViewer.findNext
Обработка событий изменения свойств
Чтобы получать уведомления об изменении свойства, зарегистрируйте обработчик события с событием 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