Печать служб отчетов на странице через Javascript
У меня есть панель мониторинга PerformancePoint Server 2007 на странице Sharepoint 2007.
На моей странице Sharepoint есть 2 фильтра, которые передаются в отчет, и мне нужно распечатать этот отчет на странице (другой кнопкой, а не SSRS).
Так что мне нужен метод javascript, который вызывает кнопку печати SSRS, которая находится в именованном DIV, внутри WebPartZone, в котором есть только одна веб-часть, элемент панели мониторинга PerformancePoint (не знаю точного имени веб-части).
Изменить. Я заметил, что отчет, отображаемый веб-частью сервера PerformancePoint, отображается с помощью IFrame на моей странице Sharepoint.
Edit2: из-за моей архитектуры службы отчетов Iframe находятся на другом сервере, что приводит к отказу в доступе при доступе через JavaScript. Таким образом, вопрос в том виде, в котором я хотел, больше не отвечает, однако я постараюсь ответить на вопрос непосредственно в службах отчетности, просто чтобы обеспечить точный ответ на вопрос.
2 ответа
Решено: так как SSRS был внутри Iframe моего Sharepoint, мне пришлось заглянуть внутрь Iframe (это работает только тогда, когда Iframe получает доступ к тому же серверу веб-страницы, к которой в данный момент осуществляется доступ, иначе мы получим отказ в доступе в javascript и произойдем сбой без вывода сообщений) Я использовал JQuery для упрощения и использовал IE 8 для поиска узлов (поскольку PerformancePoint Server 2007 не отображается в Firefox)
Javascript Нейтана мне очень помог, я проверил html структуру кнопки и обнаружил, что это таблица, которая обрабатывает щелчок, и у таблицы есть атрибут с названием title со значением Print (обратите внимание на верхний регистр на первой букве), поэтому я написал этот маленький JQuery Javascript, чтобы решить эту проблему.
$('iframe').contents().find('table[title="Print"]').click();
помня, что это мне не поможет, потому что в моем случае SSRS размещен на другом сервере, и поэтому он не доступен через javascript, я только что завершил ответ, чтобы помочь другим людям в этой ситуации.
Событие onclick для кнопки печати document.getElementById('ReportViewerControl').ClientController.LoadPrintControl();return false;
Однако мне не удалось просто добавить это к другой ссылке за пределами просмотра отчетов. Это имеет смысл, так как вы можете иметь несколько отчетов на странице и по одной кнопке печати для каждого.
Может быть, вы можете попробовать принудительно нажать кнопку печати?document.getElementById('ReportViewerControl_ctl01_ctl07_ctl00_ctl00').onclick();
во всяком случае, в моем документе.