Для выполнения примера необходимо создать html-страницу и выполнить следующие действия:
1. Добавить ссылки на следующие css-файлы: PP.css, PP.Express.css.
Также нужно добавить ссылки на js-файлы: PP.js, PP.Metabase.js, PP.Express.js и resources.ru.js.
2. Затем в теге <head> дополнительно задаётся стиль для элементов:
<style type="text/css"> body, html { height: 100%; width: 100%; overflow: hidden; } </style>
3. Далее в теге <head> необходимо добавить скрипт, создающий контейнер для области данных экспресс-отчета EaxDataBox:
<script type="text/javascript"> PP.setCurrentCulture(PP.Cultures.ru); var metabase, eaxAnalyzer, eaxMbService, eaxDataBox; function Ready() { // Создаём соединение с репозиторием metabase = new PP.Mb.Metabase({ ExportUrl: "PPService.axd?action=export", ImportUrl: "PPService.axd?action=import", PPServiceUrl: "PPService.axd?action=proxy", Id: "WAREHOUSE", UserCreds: { UserName: "user", Password: "password" } }); // Открываем соединение с репозиторием metabase.open();
// Создаём сервис для работы с экспресс-отчётами eaxMbService = new PP.Exp.EaxMdService({ Metabase: metabase }); eaxAnalyzer = eaxMbService.editDocument(109); // Создаём контейнер для области данных экспресс-отчета eaxDataBox = new PP.Exp.Ui.EaxDataBox({ ParentNode: "ExpressBox", Source: eaxAnalyzer, // Задаем источник данных Service: eaxMbService, // Задаем сервис Width: 600, Height: 600,
ImagePath: "../Debug/img/", // Указываем путь к папке с пиктограммами // Задаем видимость кнопки для выбора режима отображения представлений данных EaxModeSelectorViewIsVisible: true, // Задаем видимость группы кнопок для выбора варианта представления данных EaxToolBarViewIsVisible: true, // Зададим режим отображения контейнера с заголовком и кнопками для выбора // варианта представления данных HeaderContainerVisibility: PP.Exp.Ui.HeaderContainerVisibility.ShowAll, // Зададим видимость панели вкладок в контейнере для области данных экспресс-отчета TabControl: {IsVisible: false}, // Создаем обработчик события DataChanged DataChanged: function (sender, args) {
alert("Данные изменены"); }, // Устанавливаем обработчик события ActiveSheetChanged ActiveSheetChanged: function (sender, args) { alert("Изменен активный лист"); }, // Устанавливаем обработчик события DocDataChanged DocDataChanged: function (sender, args) { alert("Изменены данные в документе"); },
// Устанавливаем обработчик события DimSelectionChanged DimSelectionChanged: function (sender, args) { alert("Изменена отметка измерения в отчете"); }, // Устанавливаем обработчик события ObjSizeChanged ObjSizeChanged: function (sender, args) { alert("Размеры объекта изменены"); }, // Устанавливаем обработчик события RequestMetadata RequestMetadata: function (sender, args) { alert("Запрос метаданных"); },
// Устанавливаем обработчик события SheetClick SheetClick: function (sender, args) { alert("SheetClick"); } }); window.onresize(); // Изменяем размеры контейнера EaxDataBox // Обновляем все содержимое рабочей области экспресс-отчета eaxDataBox.refreshAll(); }; var idTime; // Функция для изменения размеров контейнера EaxDataBox при измерения размеров окна window.onresize = function updateSize() {
if (idTime) clearTimeout(idTime); idTime = setTimeout(function () { if (eaxDataBox) { // Устанавливаем новые размеры для контейнера EaxDataBox eaxDataBox.setWidth(document.body.offsetWidth - 30); eaxDataBox.setHeight(document.body.offsetHeight - 30); } idTime = null; }, 100); }; </script>
4. В теге <body> в качестве значения атрибута «onLoad» указываем название функции для создания рабочей области экспресс-отчета, а также размещаем блок с идентификатором «ExpressBox»:
<body onselectstart="return false" onload="Ready()"> <div id="ExpressBox" style="height: 860px;"></div> </body>
После выполнения примера на html-странице будет размещён компонент EaxDataBox, имеющий следующий вид:
См. также: